Help us understand the problem. What is going on with this article?

LINE ClovaのハッカソンでぐるなびAPIを使った話

More than 1 year has passed since last update.

LINE Clova のハッカソンが開催されていたので参加してみました。
折角なので、その場で集まった人間で即席チームでやってみました。

っで、何を作るかアイデア出しすることになったんですが、自慢を言うと褒めてくれる案が採用されました。
本当は言った自慢をストックして他の人が聞くものを提案したのですが、一字一句正確に聞き取るのは難しいなと判断。
なお、この段階ではぐるなびAPIを使うことは一切考えていなかったです。

自慢を聞いてレスポンスする機能は全体の半分くらいの時間で完成したので、他の人が提案したおすすめのレストランを探す機能を実装することになりました。
レストラン系の他のAPIもいくつか探してみましたが、ぐるなびAPIを使うことになりました。

作ったもの

ソースはここにまとめております。
https://github.com/ri-zhi/boast-about-line-clova

ハッカソンに参加した後にぐるなびAPIがバージョンアップしたので、せっかくなので全体的に書き直しております。
また、ハッカソンはMP3音源で喋らせていたのですが、割愛してLINE Clovaに話させています。

イメージ画像

実際はclovaと音声会話でやりとりするのですが、イメージ画像を用意しました。
下記のように会話して行く想定です。

スキルを起動するとこのように起動します。
スクリーンショット 2018-11-30 16.53.04.png

なお、「おだてる君」ではなくて「おだてるちゃん」になった理由は「君」だと反応が鈍かったからです。

その後、適当に自慢するとこのように反応いたします。
スクリーンショット 2018-11-30 16.19.25.png

特定のワードを言うと、このようにレストランを紹介してくれます。
ワード自体は一旦「仕事、結婚、うまくいった」を設定していました。
スクリーンショット 2018-11-30 16.21.34.png

なお、実際には歓声のmp3音源が一度流れております。(ソースでの解説になりますが…
https://github.com/ri-zhi/boast-about-line-clova/blob/master/index.js
公開しているソースはトークンなどがオープンにならないよう割愛させていただいております。

index.js
// 6行目
async function getRestaurant(){
  const url = 'GNAVI_SEARCH_API_URL'
  const response = await axios.get(url)
  return {name: response.data.rest[0].name_kana, url: response.data.rest[0].url}
}

// 46行目
const restaurant = await getRestaurant()
outputSpeech = {
  "type": "SpeechList",
  "values": [
    {
      "type": "URL",
      "lang": "",
      //mp3音源のURL
      "value": "SOUND_URL"
    },
    {
      "type": "PlainText",
      "lang": "ja",
      "value": `やったね。今度頑張ったご褒美として${restaurant.name}に行こうよ`
    }
  ]
}
sendLine(restaurant.url)
responseHelper.setOutputSpeech(outputSpeech)

また紹介したお店はLINEで届きます。
(お店に迷惑が掛からないようモザイクを入れさせていただいております。
line.png

ぐるなびAPI

正直、公開しているソースだと何もわからないと思うので公式のマニュアルを参照してください。
https://api.gnavi.co.jp/api/

反省

この後も時間が余り、旅館紹介など機能がどんどん盛り盛りになったので、シンプルさがなくなったこともあり入賞は逃しました。
また、利用者の好みや場所に合わせて紹介するなど改良点も考えられます。
ただ、お試しで参加してみて即席チームでそれぞれの提案を最終的に盛り込めたので満足しております。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした