ClovaスキルをAlexaに移植してみる
Clovaスキルとして作った言えまてんクイズというのがあります。
これもPythonで作ってて、zappaを使ってawsにdeployしてました。
LINE BOOT AWORD 2018にも応募してたんだけど、箸にも棒にも引っかからなかったのかなぁ。音沙汰なし。
じゃあ、せっかく作ったしalexaにも移植してみよう。
最近chaliceでよく遊んでるし、deployもこっちにしてみよう。lambdaとalexa skillkitだとこっちの方が相性いいんじゃないかな。
なにはともあれchalice
- まずgithubでレポジトリ作る
- chaliceでnew-project
- .chalice/config.jsonを編集したり
- app.pyをひとまずHelloWorld的に
という感じでだいたいいつもの流れと一緒。
from chalice import Chalice
import logging
import json
import random
import re
import os
import sys
import alexa-speech
app = Chalice(app_name='tokyo.ikegami.yeahma10.alexa')
logger = logging.getLogger()
debug = os.environ.get('DEBUG_MODE')
if debug == '1':
logger.setLevel(logging.INFO)
else:
logger.setLevel(logging.ERROR)
@app.lambda_function()
def default(event, context):
return welcomeIntent()
def welcomeIntent():
return alexa-speech.QuestionSpeech('こんにちわーるど').build()
Echo Spot(とか)に対応
今回はDisplayインターフェースに対応してみる事にします。
https://developer.amazon.com/ja/docs/custom-skills/display-interface-reference.html
シンプルなパターンだとこれをdirectiveに入れればいいらしい
{ "type":"Display.RendorTemplate",
"template":
{
"type":"BodyTemplate1",
"token": "string",
"backButton": "VISIBLE"(default) | "HIDDEN",
"backgroundImage": Image,
"title": "string",
"textContent": TextContent
}
}
画像がいるみたいなのでS3に適当なのを用意しました。
Intentはこうしよう。
- HelloIntent 入り口
- QuizInIntent
Dialogで発話を回収結局、ただの力業になった。。 - QuizIntent
Dialogで発話を回収結局、ただの力業になった。。 - AnswerIntent 画面送る
- MenuIntent AMAZON.HelpIntentの時に
そして作った
作ってみたけども、結局サックリ移植にはならなくてけっこう作り直しました。
Display対応してみようってのもあったし、clovaとslotの感じがちょっと違ったりもあったし。
で、Display対応についてはそんなにめんどくなかった。
必要になるのは以下の4点くらいかな。
- requestの["context"]["System"]["Display"]["supportedInterfaces"]にDisplayがあるかどうかチェック -> あればDisplay対応のレスポンス返す
- 背景画像用意する。いくつかのサイズを用意しておけばデバイスに応じて読み込んでくれるらしい。340x340と576x576を用意してみた
- Desplay用のテキストを考える。RichTextにすると簡単な装飾ができる
-
actionタグに対応する。requestのタイプに
Display.ElementSelected
ってのが入ってきて、さらにtokenでイベントの判断できるみたいだけど、シミュレータでは対応してないっぽい
背景画像の所はこんな感じで、デフォルトと正解時、不正解時の3パターンx2サイズを用意しまいした。
_imgs = [
{"sources": [
{ "url": img_340 },
{ "url": img_576 }
]},
{"sources": [
{ "url": correct_340 },
{ "url": correct_576 }
]},
{"sources": [
{ "url": incorrect_340 },
{ "url": incorrect_576 }
]}
]
_params = {
"backgroundImage": _imgs[_img-1],
画像はS3においてある。
詳しくはこのへんですかね。とりあえず今回はBodyTemplate1固定で使ってる。
画面はこんな感じになった。
あ、そういえば。下のようにalexaのスキルきっとでDisplayインターフェースをonにしたわけだけど、
ビルトインインテントがいっぱい増えた。これ、対応できてないけど審査には影響ないかな。。
実機ないし、あんまりようわからん。
なにはともあれ、一通り動作するようにして審査だしてみました。
これが通れば今月4つめなのでEcho Showもらえるで。
なんかAPLっての気になるし試してみたい。
一旦これでalexa関連は一息かな。そろそろawsのDevopsのProfessional受けたいからこのへんを記事にしていければと。年明けに受けよう。
Author And Source
この問題について(ClovaスキルをAlexaに移植してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/ikegam1/items/5bb678fe700f8cfc6128著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .