dialogflowをV2 APIにしたらWebhookのレスポンスで文字化けに遭遇した話。


問題概要

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);


  1. なお、API Gatewayの設定でヘッダに追加してみても解決できず、原因を見つけるまでに随分時間がかかってしまった。