質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Twilio

Twilioは電話・SMS・ビデオ・チャット・SNS連携等、様々なコミュニケーションチャネルの融合を可能とするクラウドコミュニケーションAPIサービスです。 従来は大規模な設備投資が必要だった電話と連携したシステムも、汎用的な開発言語で容易に開発が可能となり、 様々なコミュニケーションチャネルを活用したシステム構築が可能となります。

Q&A

解決済

1回答

2790閲覧

Twilio Studio からのHTTPリクエストについて

su_

総合スコア6

Twilio

Twilioは電話・SMS・ビデオ・チャット・SNS連携等、様々なコミュニケーションチャネルの融合を可能とするクラウドコミュニケーションAPIサービスです。 従来は大規模な設備投資が必要だった電話と連携したシステムも、汎用的な開発言語で容易に開発が可能となり、 様々なコミュニケーションチャネルを活用したシステム構築が可能となります。

0グッド

1クリップ

投稿2018/10/03 02:39

やりたいこと:Twilio Studio でHTTPリクエストを行いたい

初めて投稿します!
説明足らずなところ、わかりにくいところがありましたら、ご指摘いただけると嬉しいです。

現在、TwilioStudioを使って自動翻訳IVR(英語⇒日本語)を構築しています。
翻訳機能自体はGoogeAppsScript(GAS)で作成し、URLエンコードでhttpリクエストを発行して、結果を取得しています。
お客様が英語で話す⇒話した内容をGatherでSTTし、GASに渡す⇒GASからのレスポンスをSayでTTSする という流れです。

状況説明1:Studioフロー

![Studioフロー

状況説明2:Widgetsの設定
Widgets項目設定値
WelcomeEnglishLanguageEnglish (US)
Speech Recognition LanguageEnglish (United States)
Stop Gathering After30 Seconds
translateEtoJContent TypeFrom URL Encoded
Request Body指定なし
Http Parameters指定なし
sayJapaneseLanguageJapanese
状況説明3:GASに構築したコードの仕様

 <リクエスト>
text:翻訳したい元の文章
source:翻訳したい元の文章の言語。en=英語、ja=日本語
target:翻訳結果として返したい文章の言語。en=英語、ja=日本語

 <レスポンス>
ans:翻訳結果

例)
<リクエスト>

http

1https://(GASのURL)?text=Hello&source=en&target=ja

<レスポンス>

JSON

1{ 2 "ans": "こんにちは" 3} 4

発生した問題:HTTPリクエスト処理が実行されず、failedと判断されてしまう・・・

"Hello"程度であれば正常に処理されるのですが、ちゃんとした文章で実行すると一瞬でfailedになってしまいます。
TwilioDocsを読む限り、タイムアウト値は5秒のようなのですが、
1秒も待たずにfailed判定です。。

その際のログは下記のとおりです。
※Detailに何も出ないのは仕様なのか・・・バグなのか・・・

Studioログ

Widget & Flow Properties の中身はこのような状態で、WelcomeEnglish WidgetのSpeechResultはきちんと取れていますが、translateEtoJが実行された形跡がありません。

"widgets": { "translateEtoJ": {}, "WelcomeEnglish": { "Called": "+81xxxxxxxxxx", "ToState": "", "CallerCountry": "JP", "Direction": "inbound", "SpeechResult": "I want to change reservation.",

ちなみに”Hello"と話して正常に動いた場合のログは下記のような形です。
※文字化けは元からなのであまりお気になさらず・・・

"widgets": { "translateEtoJ": { "status_code": 200, "content_type": "application/json", "parsed": { "ans": "������������������" }, "body": "{\"ans\":\"������������������\"}" }, "WelcomeEnglish": { "Called": "+81xxxxxxxxxx", "ToState": "", "CallerCountry": "JP", "Direction": "inbound", "SpeechResult": "Hello.",

試したこと

RESTツールを使用し、SpeechResultの結果を入れてGASを実行すると、1075 msで下記のようにレスポンスが返ってきます。
よってGAS側の問題ではないと判断しています。

<リクエスト>

http

1https://(GASのURL)?text=I want to change reservation.&source=en&target=ja

<レスポンス>

JSON

1{ 2 "ans": "私は予約を変更したい。" 3}

疑っていること

StudioのHTTPSリクエストタイムアウト値が短い(ひょっとして0.5秒とか)?
あるいは、そもそもURLの文字列が長すぎると実行してくれない?
と疑っております。。。

この当たりの知見のある方、ご回答いただけると嬉しいです!
どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

他経由で解決しました。

KDDIウェブコミュニケーションズ サポートデスクの方にもお伺いしたところ、解決しました!

大変お恥ずかしい落ちですが、「URLエンコードしろ」。以上です。。。

NG

1text=I want to change reservation

OK

1text=I%20want%20to%20change%20reservation.

実際にはWelcomeEnglishのSpeechResultの結果を渡したいので、下記のように修正しました。

NG

1{{widgets.WelcomeEnglish.SpeechResult}}

OK

1{{widgets.WelcomeEnglish.SpeechResult | replace:' ','%20'}}

※もちろん、半角スペース以外にも変換すべき文字はありますので、厳密にはURLエンコードするFunctionをかませて対応する必要があると思いますが。

今回学んだこと。

SpeechResult の結果が日本語である場合は、TwilioStudio側でよろしくURLエンコードしてくれてるっぽい
SpeechResult の結果が英語である場合は、TwilioStudio側でURLエンコードしてくれないので、別途対応が必要

投稿2018/10/04 02:50

su_

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問