Skip to content
DaiYingFei edited this page May 18, 2018 · 23 revisions

GoでAlexaスキルを開発

Alexaとしりとりゲームするスキルの要件定義

スキルルール

  • スキル呼び出し名
    「しりとりスキル」

  • 他のアクションを呼び出す方法

    • しりとり
      「では{単語}」という形で返答

    • 中止
      「しりとりゲームを中止」

    • 終了
      「しりとりゲームを終了」

    • 再開
      「ゲームを再開」

  • 注意
    ゲームをたくさん中止することは可能だが、 再開する場合は一番最近中止したゲームしか再開しません。 (中止して最後に返答した単語を提示してくれる)

  • スキルを使う方法(イメージ図)

今回使う技術

  • Go

  • Lambda

  • Dynamo

    • テーブル
      • word (スタート単語をあげる)

        • word_id 数値 プライマリパーティションキ
          • getWordListを使ってDBに格納
          • idが連番(欠番あってはいけない)
          • ランダムにidを出して、idで返答単語を検索
        • word 文字列
      • word_v2 (echoから返答する単語)

        • word_id 文字列 プライマリパーティションキ
          • 単語の先頭一文字
        • word 文字列 プライマリソートキー
      • history_detail_v2 (返答した履歴を格納する)

        • history_id 文字列 (ゲーム開始日時 yyyymmddhhmmss)
        • answer 文字列 (返答した単語,返答者;)
        • flag 数値 (ゲームの進捗状況、ゲームスタート0、ゲーム中止2)
  • Alexa Skill

事前に知るべき、参考になること

シーケンス図

気づいたところ

  • AlexaがIntentを間違ってしまう
  • 返答単語を聞き取れない(別の単語を聞こえしまう)
    • 公開された「しりとり」スキルに同じ問題が発生されている(単語を認識してくれない) (URLはこちら)
  • 「あ」が末尾になる単語を返答するとスロットvalueとして取れない
  • SessionEndedRequestの場合Alexaのコンソールテストシミュレータは返したレスポンスを正しく取得できるが、音声は正しくない

簡単のAlexaスキル開発サンプル(Go)