Dialogflow から webhook される php を Google API v2 に対応させる
Dialogflow から google api v2 に対応しろとのお知らせが表示されるので、webhook される php を Google API v2 に対応させる
命令の流れをおさらい
まずは、どういう仕組だったかを忘れていたのでメモ
アプリに入って、命令を行うと、Intent にある Action and parameters の値を含む json が
Fulfillment に指定した url へポストされるので、応答メッセージを含む json を返す
という仕組み
API の切り替え
google api v2 対応への切り替え(Dialogflow側)は、スイッチを切り替えるだけ
api 切り替え後の web 側変更
API を切り替えると、送られてくる json の内容が変わります。また、応答メッセージを埋め込む json の形式も変わります。なので「そのままだと アプリから応答がありません」みたいな形になります
api v1 で post される json
api v2 で post される json
php の場合
命令の流れをおさらい
まずは、どういう仕組だったかを忘れていたのでメモ
アプリに入って、命令を行うと、Intent にある Action and parameters の値を含む json が
Fulfillment に指定した url へポストされるので、応答メッセージを含む json を返す
という仕組み
API の切り替え
google api v2 対応への切り替え(Dialogflow側)は、スイッチを切り替えるだけ
api 切り替え後の web 側変更
API を切り替えると、送られてくる json の内容が変わります。また、応答メッセージを埋め込む json の形式も変わります。なので「そのままだと アプリから応答がありません」みたいな形になります
api v1 で post される json
api v2 で post される json
php の場合
$data = file_get_contents("php://input"); // 取得 $jsonArray = json_decode($data, true); // json -> 配列 // v1 action取得 $action = $jsonArray["result"]["action"]; // v2 action取得 $action = $jsonArray["queryResult"]["action"];
な感じに取得位置を変更します
送られてきたアクションに対する応答は、こちらのような形で speech と displayText で返していたものを fulfillmentText というキーに変更します
※面倒なので v1 の応答に fulfillmentText を追加して対応したらうまく動きませんでした
端的に書くと
送られてきたアクションに対する応答は、こちらのような形で speech と displayText で返していたものを fulfillmentText というキーに変更します
※面倒なので v1 の応答に fulfillmentText を追加して対応したらうまく動きませんでした
端的に書くと
// api v1 応答 echo json_encode(array( "speech" => '応答メッセージ', "displayText" => '応答メッセージ' )); // api v2 応答 echo json_encode(array( "fulfillmentText" => '応答メッセージ' ));です
コメント