PepperからTwilio経由で電話をかける
はじめに
Twilioには、Pythonのヘルプライブラリがあるので、PepperのPython実行環境からRestAPI経由で電話をかけることができます。
コーディング自体は簡単ですが、準備がかなり多いので、忘れないように記事にしておきます。
前提条件
- Twilioのアカウントはすでに取得しているものとします。
- AccountSID、AuthToken、発信用電話番号が必要です。トライアルアカウントでも利用は可能ですが、発信先電話番号は、認証済み電話番号のみとなります。
- Pepperアプリ(Choregraphe)はすでにセットアップされているものとします。
- 今回はMac版のVersion2.4.3を使います。Windowsでも動作します。
- Python2.7.xの環境がセットアップされているものとします。
- 今回は、2.7.12を利用します。
手順
- TwilioのPythonヘルパーライブラリの準備します。
- 上記ライブラリに依存するライブラリの準備します。
- Choregrapheを使って、Pythonスクリプトを作成します。
TwilioのPythonヘルパーライブラリを準備
- TwilioのPythonヘルパーライブラリをダウンロードします。
- Zipファイルを解凍します。
- 解凍されたフォルダの中のTwilioフォルダをどこかにコピーしておきます。
依存するライブラリを準備します。
Twilioのヘルパーライブラリは、いくつか別のライブラリを利用しています。
そのため、予め依存ライブラリをダウンロードしておきましょう。
httplib2
httplib2のサイトから、最新版のzipファイルをダウンロードします。
今回は、httplib2-0.9.2.zipを利用します。
1. ダウンロードしたzipファイルを適当な場所に展開します。
2. 展開したフォルダに移動し、セットアップを実行します。
$ python setup.py install
インストールが完了すると、build¥libフォルダ内に、httplib2フォルダができるので、それをどこかにコピーしておきます。
pytz
pytzのサイトから、最新版のzipファイルをダウンロードします。
今回は、pytz-2016.7.zipを利用します。
1. ダウンロードしたzipファイルを適当な場所に展開します。
2. 展開したフォルダに移動し、セットアップを実行します。
$ python setup.py install
インストールが完了すると、build¥libフォルダ内に、pytzフォルダができるので、それをどこかにコピーしておきます。
Choregraphe上でPythonスクリプトを作成
ライブラリフォルダを設定する
Choregrapheのプロジェクトファイルウィンドウの「+」ボタンを押し、「新規フォルダ...」を選択します。
フォルダ名を「lib」にして、「Create」ボタンを押します。
プロジェクトファイルウィンドウの「+」ボタンを押し、「フォルダをインポート...」を選択します。
先程解凍しておいたTwilioフォルダを選択します。
同様の手順で、先程セットアップしておいたhttplib2フォルダとpytzフォルダも追加しておきます。
ライブラリを読み込むスクリプトを作成する
ボックスライブラリのProgramming→Templatesから、「Python Scripts」をパネルにドラッグします。
ドラッグしたボックスをダブルクリックし、スクリプトエディタを開きます。
既存のコードをすべて削除し、以下のコードを貼り付けます。
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self)
def onLoad(self):
self.pathModified = False
def onUnload(self):
if self.pathModified and self.folderName and self.folderName in sys.path:
sys.path.remove(self.folderName)
self.folderName = None
def onInput_onStart(self):
appFolder = self.behaviorAbsolutePath().replace(self.behaviorRelativePath(), "")
self.folderName = os.path.join(appFolder, "lib")
if self.folderName not in sys.path:
sys.path.append(self.folderName)
self.pathModified = True
self.onStopped()
def onInput_onStop(self):
self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
self.onStopped() #activate the output of the box
これで、起動時にライブラリフォルダ(libフォルダ)が参照されるようになります。
2017/1/4 コードに間違いがあったため、一部修正
電話をかけるスクリプトを作成する
先程と同じようにボックスライブラリから2つ目のPython Scriptsボックスをパネルにドラッグします。
ドラッグしたボックスをダブルクリックして、スクリプトエディタ画面を表示します。
すでに書かれているコードは一度すべて消していただき、以下のコードを上書きします。
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self)
def onLoad(self):
#put initialization code here
pass
def onUnload(self):
#put clean-up code here
pass
def onInput_onStart(self):
#self.onStopped() #activate the output of the box
from twilio.rest import TwilioRestClient
# put your own credentials here
ACCOUNT_SID = 'ACXXXXXXXXXXX'
AUTH_TOKEN = 'XXXXXXXXXXX'
client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN)
client.calls.create(to='+8190XXXXXXXX', from_='+8150XXXXXXXX', url='http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient')
self.onStopped()
def onInput_onStop(self):
self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
self.onStopped() #activate the output of the box
ACCOUNT_SIDとAUTH_TOKENは、それぞれご自分のTwilioのアカウントSIDとAuthTokenを記載します。
client.calls.create関数の中にある、toは宛先電話番号、fromは発信者番号になります。発信者番号はTwilioで購入した番号を指定します。また、Twilioのトライアルアカウントをご利用の場合は、認証済みの番号にのみ発信が可能です。
urlは、TwiMLを返すためのWebHookになっています。今回は、予め用意してある保留音が流れるようになっています。
以上で準備は終了です。
フローを作成してテストする
フローを作成する
テストする
Pepperと接続を行い、テストをしてみましょう。
しばらくすると電話がかかってくれば成功です。
Author And Source
この問題について(PepperからTwilio経由で電話をかける), 我々は、より多くの情報をここで見つけました https://qiita.com/mobilebiz/items/ff2b841136a699ad1798著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .