1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Botpress】日本語入力をAPIにGET値で渡す方法

Posted at

チャットボットのBotpressを使用していて、ユーザー入力の内容をAPIに渡したいケースがありますが、日本語の内容をそのまま渡そうとするとエラーになったので、解決方法を調べました。

Call APIのエラー

Call APIを使用して対話からのユーザー入力をGET値としてAPIに渡します。
ここでは天気の情報を返すAPIを例として使います。

Screen Shot 2022-02-26 at 18.18.53.png

以下は対話エミュレーターの表示。
ユーザーが「今日の大阪の天気」を聴いたのに対してエラーを返しています。

Screen Shot 2022-02-26 at 21.15.57.png

ログを確認すると、「UNESCAPED CHARACTERS」のエラーが出力されていました。どうやらGET値として設定する前にURLエンコードをする必要があるようです。

Screen Shot 2022-02-26 at 21.15.04.png

対処法

フックを使って入力をURLエンコードしてeventに保存しておきます。
Call API実行時にeventを参照してGET値に設定します。

Botpress studioの左メニューの「code editor」から「Hooks」を選び、フックを新規作成します。フックには「event.payload.text」をURLエンコードしてから「web ContextString」として「event.state.user」に保存するコードを登録します。

Screen Shot 2022-02-27 at 21.28.31.png

次はCall APIのGET値を修正します。
「event.state.user.web ContextString」をGET値に指定します。

Screen Shot 2022-02-26 at 18.03.10.png

対話エミュレーターを実行すると、APIが正しいレスポンスを返していることがわかります。

Screen Shot 2022-02-26 at 21.21.46.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?