問題概要
DialogflowでV2 APIが公式になったということでV2 APIに切り替えたら、Webhookからのレスポンスが文字化けするようになりました。
構成
Google Assistant → Dialogflow → AWS API Gateway → AWS Lambda
解決
Lambdaで設定するレスポンスのヘッダに"charset=UTF8"を追加したら解決した。1
Lambdaのindex.js(before)
var response_json = {
fulfillmentText:"こんにちは"
};
var response = {
statusCode: 200,
headers: { "Content-type": "application/json" },
body: JSON.stringify(response_json)
};
context.succeed(response);
Lambdaのindex.js(after)
var response_json = {
fulfillmentText:"こんにちは"
};
var response = {
statusCode: 200,
headers: { "Content-type": "application/json; charset=UTF-8" },
body: JSON.stringify(response_json)
};
context.succeed(response);
-
なお、API Gatewayの設定でヘッダに追加してみても解決できず、原因を見つけるまでに随分時間がかかってしまった。 ↩