プログラミングが不要なGoogle Homeアプリ制作サービス「RINDO」(ベータ版)を無料提供中!
Ebisu Voice Production Logo
開発ブログ

Go言語でConversation webhookのresponseを組み立てる

Daishi Kato
2018年07月25日

恵比寿ボイスプロダクションのGoogle Homeアプリの開発では、 Go言語(Golang)とConversation webhookを使っています。 Conversation webhookのrequestをparseした後は、 responseを組み立てることになります。

responseの組み立てにもメソッドを使います。 responseには大きく2種類あります。 返答を求めないものと求めるものです。

screenshot

前者はTellとし、後者はAskとしました。 これは、Actions SDK v1を参考にしたものですが、 Actions SDK v2では、tellはcloseになってしまいました。 tellは評判があまり良くなかったようです。 個人的にはcloseの引数にtextを渡すのはしっくりこないので、 もう慣れてしまったtellでよいかなと思っています。

ユーザが言ったことをそのままおうむ返しするアプリを作るとすると、 例えば次のようなコードになります。

func handle(req *api.AppRequest) *api.AppResponse {
        var res api.AppResponse
        text := req.GetQuery()
        res.Ask(text)
        return &res
}

参考までに同じ内容を Actions SDK v1 で書くと次のようになります。

const handle = (app) => {
  const text = app.getRawInput();
  app.ask(text);
};

ちなみに、Actions SDK v2ではintent mapを使う方法がますます標準のよう (そうでない場合はfallback handlerを登録する) ですので、対等な比較にはなりませんが、次のようになります。

app.intent('actions.intent.TEXT', (conv, text) => {
  conv.ask(text);
});

これはこれですっきり書けていいですね。 ちょっと脱線しましたが、比較するのであれば、 もう少し複雑な例の方が良さそうですね。 繰り返しになりますが、恵比寿ボイスプロダクションでは、 上記最初のコードのように多くのアプリをGo言語(Golang)で開発しています。 コードは若干増える傾向にはありますが、 比較的手軽に開発できています。

恵比寿ボイスプロダクション
github icontwitter icon
Home
開発コンサル
RINDO
About Us
お問い合わせ
Privacy Policy