Closed8

アラート発生時に内容を電話通知ができるようにする

りゅうりゅう
  1. 任意の音声を通話させるために、TwiMLを公開する
  2. S3に以下のファイルを格納する。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say language="ja-jp">Twilioへようこそ!テストで送信しました。</Say>
</Response>
  1. 対象のS3バケットの「静的ウェブサイトホスティング」を有効にする。
りゅうりゅう

注意:
性的ウェブサイトホスティングのアクセス許可全員(パブリックアクセス)に読み込み権限が必要

りゅうりゅう

Twilioは、デフォルトだとPOSTでXMLファイルを取得しに行くため、S3にホスティングするとエラーになる。
回避策として、コールする際に明示的にGETメソッドを利用するように記述する。

from twilio.rest import Client

account_sid = "xxxxxxxxxxxxxxxxxxxxx"
auth_token = "xxxxxxxxxxxxxxxxxxxxx"

client = Client(account_sid, auth_token)

message = client.calls.create(
    to="+xxxxxxxxxxxxx",
    from_="+xxxxxxxxxxxxx",
    url="https://xxxxxxxxxxxxxxxxx.xml",
    method="GET"
)

print(message.sid)

参考:https://tech.sanwasystem.com/entry/2016/01/28/211457

りゅうりゅう

python上でtwiMLを作成するコード

from twilio.rest import Client
import urllib.parse
account_sid = "xxxxxxxxxxxxxxxxxxxxxxxxx"
auth_token = "xxxxxxxxxxxxxxxxxx"

message = "起きてー"

twiml = ""
twiml += '<?xml version="1.0" encoding="UTF-8"?>'
twiml += '<Response>'
twiml += f'<Say voice="alice" language="ja-JP" loop="3">{message}</Say>'
twiml += '</Response>'


encode_twiml = urllib.parse.quote(twiml)
url = f'http://twimlets.com/echo?Twiml={encode_twiml}'

client = Client(account_sid, auth_token)
message = client.calls.create(
    to="+0000000000",
    from_="+0000000000",
    url=url,
    method="GET"
)
このスクラップは2023/01/07にクローズされました