出会い系(?)を作った
この記事は,FUN Advent calendar 2018の12月25日の記事です.
皆さん!12月25日ですね!恋人のいる方は楽しみ,いない方は唇を噛んで過ごしましたか??私は男友達と肉を頬張りながら,School Days観てました.
今日はXmas!!25日のAdvent Calendarなので,出会い系サービスを作ることにしました.でも,ただリア充を作るだけではつまらない.どうせなら社会に害為す奴ら同士で潰し合ってもらいたい.
そこで今回作ったのは,迷惑電話を掛ける奴ら同士を繋ぐサービスです.電話やSMSを使うサービスを作るのにピッタリな「Twilio」を使いました.
こんな感じで潰し合ってもらいます.
♥
下準備
Twilioは本当に優れたサービスで,自分のアプリケーションと電話周りを繋ぐのを簡単に実装できます.今回のシステムを実装するにあたり,Twilioの以下の機能を使用します.
- Programmable Voice
まずは,Twilioのコンソールにアクセスして,アカウントを作成します.自動的にTrial Accountになるので,制限付きではありますがクレジットが付いてきて,Twilioのサービスを使えるようになります.
次にTwilioで電話番号を入手します.適当に日本の電話番号を入手すると良いでしょう.
実装
まず2者のうちの一人に電話をかけ,繋がったらもう一者を呼び出して2者を繋ぐような感じで書きます.めっちゃ簡単です.
まずは一人に電話をかけるコードを書きます.
from twilio.rest import Client
account_sid = os.environ["ACCOUNT_SID"]
auth_token = os.environ["AUTH_TOKEN"]
client = Client(account_sid, auth_token)
to_number = "+81234567890" # 発信者番号
from_number = "+81123456789" # 発信先
call = client.calls.create(
url="https://example.com/app.xml", # 後述するTwiMLのURL
to=to_number,
from_=from_number,
)
print(call.sid)
次に,TwiMLなるものを使って,もう一者を繋ぐようにコードを書きます.今回作りたいサービスにピッタリの動詞Dialを使います.
<?xml version version="1.0" encoding="UTF-8"?>
<Response>
<Dial callerId="+81234567890">
<Number>+81123456789</Number>
</Dial>
</Response>
このTwiMLは手書きで_https://example.com/twiml.xml_みたいな場所に設置しておいても良いし,Pythonなどで動的に書き出しても良いです.どうせなのでPythonで書きましょう.TwilioのSDKには,TwiMLを書き出す機能もあるのでめっちゃ便利.XMLを手書きで書かなくて済みます.
先程のTwiMLを書き出すPythonのコードは,次のように書けます.
from twilio.twiml.voice_response import VoiceResponse, Dial
res = VoiceResponse()
dial = Dial(caller_id="+81234567890") # 発信者番号
dial.number("+81123456789") # 発信先
res.append(dial)
print(res)
これをFlaskに組み込んで,_/app.xml_にアクセスしたらこれを返すようにしましょう.コードは省略.
実装は以上.あとは一者に発信するコードを実行すれば,勝手に二人は結ばれます.
今回作ったコードを実際に使うと,本当に”社会に害為す奴ら”に試すと「営業妨害」で訴えられるかもしれません.なので絶対に使ってはなりません.
こんな感じで電話を使ったサービスを作れるので,皆さんもTwilio使いましょう!以上,FUN Advent Calendar 25日の記事でした.