よくあるお問い合わせ (FAQ)

Twilio Studio について

Twilio Studio とは

Twilio Studio (以下 Studio) は電話発信、条件分岐、HTTP リクエストといったウィジェットを配置し、簡単に Twilio の機能を利用できるサービスです。

下記の例はメッセージを流し、番号のプッシュか音声認識をし、その内容で営業やサポートに転送します。

dc784420-2efc-40c7-aef5-42044f8e8dce.png

ドキュメントはこちらをご参照ください。

https://jp.twilio.com/docs/studio/

利用可能なウィジェットの一覧はこちらとなります。

https://www.twilio.com/docs/studio/widget-library

クイックスタート

 

料金

毎月 1,000 回まで無料です。Account SID 単位ではなくプロジェクト単位(親アカウントとサブアカウントの合算)になります。

ログとデバッグ方法

Exporting Flow Data

Studio の完全なフローが JSON でエクスポート可能です。そのため同じフローを別途環境で構築可能です。新規 Studio 作成時のこの JSON を指定することができます。開発環境や検証環境として利用可能です。

Steps と Flow Data

Studio のフローの流れと利用されたデータは Step と Flow Data から確認可能です。

どこで処理が止まったのか、処理が止まった際のデータを確認可能です。架電や SMS を利用の場合は Call SID や Message SID も記録します。併せて Call Logs や Message Logs もご参照ください。電話の詳細は Studio ではなく Call Logs に記録されています。

Step の最後の行が最後の実行のため、最後の行や、その一つ前の行の▼をクリックして内容を表示し、停止場所の確認や、停止理由をご確認ください。

Studio の Logs から FNxxxx をクリックすることで参照可能です。画面中程の Steps と Flow Data でタブに分かれています。

ab64b293-84e1-4b6f-aab7-416e29e5f21c.png

API でも取得可能です。

Revision History から以前の Flow に戻すことも可能なため、正常に稼働していた Flow に戻して検証することも可能です。手順は下記をご参照ください。

 

Twilio 共通のエラー

Error Logs には Twilio 全体のエラーが記録されます。こちらもご参照ください。

https://jp.twilio.com/docs/sms/debugging-tools

サポートに調査依頼をする場合

下記 4 つのファイルをご提出ください。また、利用目的、症状、頻度も併せてご連絡ください。

  1. Export Flow Data

  2. Steps

  3. Flow Data

  4. Error Logs にエラーがあればエラー内容

制限

ウィジェット数の制限や実行回数など Studio の制限は下記をご参照ください。

現在 1000 ウィジェット 1000 ステップの制限 (2022/8 時点) がありますが Subflow (後述) を利用することで回避可能です。

Tips

REST API からの利用

Studio は電話や SMS のトリガー以外に REST API から呼び出すことができます。

Twilio CLI であれば下記で Studio の REST API Trigger を呼び出すことができます。本番は電話をトリガーとする場合でも、開発中は REST API で Studio を呼び出すことで電話料金の節約と開発効率を上げることができます。

$ twilio api:studio:v2:flows:executions:create \
--flow-sid FWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
--to +8180xxxxyyyy \
--from +8150xxxxyyyy

実行停止は下記で可能です。

$ twilio api:studio:v2:flows:executions:update \
--flow-sid FWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
--sid FNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
--status ended

現在 REST API は v2 のため v1 をご利用の場合は v2 をご利用ください(2022年8月時点)。v1 と互換性がありますが機能追加や変更点は下記をご参照ください。

https://www.twilio.com/docs/studio/rest-api/v2

Say で SSML 利用

Studio の Say ウィジェットは SSML が利用できません(2022年8月時点)。

Add TwiML Redirect ウィジェットを使うことで外部 TwiML を呼び出すことができるため、すべての TwiML の機能が利用可能です。

TwiML は TwiML Bins で無料でホスティングが可能です。

また TwiML Bins には GET でパラメータを渡すことが可能です。

IVR (Gather) の Tips

プッシュボタン以外に日本語の音声認識も可能です。

https://jp.twilio.com/docs/studio/widget-library/gather-input-call

プッシュボタンの場合

  • Stop gathering after は無音から待ち時間です。入力や音声認識後の待ち時間が長いと感じる場合はデフォルトの 5 秒を 2 秒などに変更ください

音声認識の場合

  • 認識有無に限らず、無音でも利用時間で課金されます

  • 日本語を認識するには「Speech recognition language」で Japanese (Japan) を選択ください。デフォルトは英語のため、選択をしないと正しく音声認識しません。プルダウンは Japan のように文字検索が可能です。「Language」は TwiML の Say の発話言語のため別の設定となります

  • 「Speech recognition hints」にカンマ区切りで単語を登録でき、認識精度を上げることができます。会社名や商品名などの固有名詞にご利用ください

  • 「Advanced Speech Settings」で発声後の待ち時間秒数を「Speech timeout」で設定可能です

その他

  • TwiML にある timeout 機能はありません。Add TwiML Redirect ウィジェットをご利用ください

外部処理の呼び出し

外部 API の呼び出しや、お客様 DB や CRM との接続には Run Function ウィジェットもしくは HTTP Request をご利用ください。Twilio Studio が用意するウィジェットだけでは解決できない処理を補うことが可能です。

Run Function ウィジェット

Run Function ウィジェットは Twilio Functions を呼び出す機能となります。

以下は DTMF で入力された値によって連絡先を変更する Functionとの連携例となります。

Make HTTP Request ウィジェット

Make HTTP Request ウィジェットは指定 URL に GET/POST で URL エンコードされたパラメータもしくは JSON を送信可能なウィジェットとなります。

以下は SMS 受信で Slack に通知する例となります。日本からアメリカ番号に送信する必要があり、料金的に現実的ではありませんが、受電や REST API をトリガーにでき、また API の利用例としてご参照ください。

なお、Make HTTP Request ウィジェットで TwiML を返し、Studio フローに実行させることはサポートされていません。代わりに、Add TwiML Redirect ウィジェットや Run Function ウィジェットをご利用ください。

変数と Liquid テンプレート

Studio は変数とテンプレートを利用できます。テンプレートは変数や配列、条件分岐、map、JSON 変換、文字列の split や join などが利用できるため、簡単な処理であれば Functions や外部サイトを利用せず Stduio だけで完結します。

例えば Gather で「17」と入力された値をそのまま Say が読み上げると「ジュウナナ」になります。「イチ ナナ」と読ませるには下記となります。「1 7」は「イチ シチ」になるため、「7」を「ナナ」に変換しています。

{{widgets.gather_1.Digits | split: '' | join: ' ' | replace: '7', 'ナナ' }}

テンプレートは https://github.com/Shopify/liquid を利用しているため、Studio を利用せず、ご自身のローカル環境でテンプレートの開発・試験が可能です。ローカルで検証後、最終的に Studio にペーストして検証することで開発効率を上げることができます。

$ gem install liquid
$ cat test.rb
require 'liquid'
template = "{{'1234567890' | split: '' | join: ' ' | replace: '7', 'ナナ' }}"
puts Liquid::Template.parse(template).render
$ ruby test.rb
1 2 3 4 5 6 ナナ 8 9 0

Split Based On の日時判定の注意点

Split Based On の Is After Time や Is Before Date により日時判定ができ、かつ Liquid テンプレートのため Variable To Test に下記を書くことで現在日時を取得可能です。

{{'now' | date: '%H:%M'}}

ただし、now のタイムゾーンが JST や UTC ではなく PST/PDT です。そのためサマータイムがあり、一定期間、一時間の時差が発生するため日本国内で利用するには向きません。

そのため Twilio Functions と連携させた下記をご検討ください。祝日判定も含まれています。

利用可能な組み込み

From や To の電話番号などを Studio から参照可能です。一覧は Studio User Guide にありますが、ここでは主要な値を紹介いたします。

  • {{flow.flow_sid}} - Studio の Flow SID。FW からはじまる SID

    • {{flow.sid}} - Flow SID 内で実行する毎に作成されます。FN からはじまる SID。

    • {{flow.channel.address}} - From の電話番号

  • {{contact.channel.address}} - To の電話番号

  • {{widgets.ウィジェット名.属性}} - ウィジェットの値。例えば widgets.gather_1.Digits には Gather で入力された値が入ります

Subflow

Subflow は Studio のフローを分割できます。Subflow を利用することでフローの共有化や、処理でグループ分けができ、フローの可読性と保守性を高めます。

トラブルシューティング

  • Publish ボタンの押し忘れをご確認ください。Publish ボタンを押すまでは変更が反映されません

  • Split Based On で No Condition Matches が定義されていない、Make Outgoing Call で Answered 以外の分岐が設定されていないなど、ロジック上のエラーが発生した場合に Studio は途中停止し、新規リクエストを受け付けない状態になることがあります。Executions に Stop Exection が出ている場合はクリックし Studio を停止し、フローの見直しをお願いいたします。API でも終了可能です。ログを見ることで最後に実行されたフローが確認可能です。

b5a327fe-7f76-4f33-b23c-2bb1cbdf976f.png

  • その他トラブルシューティングは下記をご参照ください。
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください

0 コメント

記事コメントは受け付けていません。