Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Skill Connectionsやってみた / Introduction to Alexa's Skill Connection
Kuniaki Shimizu
January 30, 2020
Technology
0
250
Skill Connectionsやってみた / Introduction to Alexa's Skill Connection
【大阪】スマートスピーカーミーティング 2020/01/30 のLTの資料です。AlexaのSkill Connectionsを試してみた話です。
Kuniaki Shimizu
January 30, 2020
Tweet
Share
More Decks by Kuniaki Shimizu
See All by Kuniaki Shimizu
kun432
0
26
kun432
1
360
kun432
0
65
kun432
0
650
kun432
0
190
kun432
0
76
kun432
0
260
kun432
0
340
kun432
0
7.8k
Other Decks in Technology
See All in Technology
clustervr
0
160
y0hgi
1
390
sasakendayo
2
440
yosuke_matsuura
PRO
0
3.5k
shirayanagiryuji
0
2.2k
_kensh
1
170
hhiroshell
7
460
toshinoritakai
1
210
texmeijin
1
220
nihonbuson
2
1.9k
yukitodate
2
330
kanaugust
PRO
0
100
Featured
See All Featured
jeffersonlam
328
15k
gr2m
83
11k
keithpitt
401
20k
philhawksworth
192
8.8k
trishagee
20
2.1k
iamctodd
17
1.8k
malarkey
192
8.6k
jrom
114
7.1k
reverentgeek
27
1.9k
62gerente
587
200k
rmw
11
740
bermonpainter
342
26k
Transcript
Skill Connectionsやってみた スマートスピーカーミーティング 1/31 LT
About Myself 1
Kuniaki Shimizu (@kun432) - シナジーマーケティング株式会社 - インフラエンジニア - Twitter/Facebook/Github/Hatena/Alexa -
ポートフォリオ: https:/ /kun432.github.io/ - AWS認定Alexaスキルビルダー - Voiceflow Global Ambassador - Voiceflow Growth Award 2019 3 Hello!
My Skills & Actions 4 - Alexa (JP): 12 -
Google: 1 - Clova: 1 #スキル開発100チャレンジ - Alexa (US): 1
• 本資料内における意見・発言等は個人の 見解であり、所属する組織・団体の見解 を代表するものでは、ありません。 • 今日はVoiceflowの話はしません、多分。 5 Disclaimer
Skill Connections やってみた 2
最初にアンケート 7
8
ですよねー 9
Skill Connectionsおさらい 10 • 単純にいうと、スキル間連携 • スキルAから、スキルBの機能を使うために スキルBを起動する • スキルBの処理が終わるとスキルAに戻る
• 用語 ◦ プロバイダ(上で言うB) ▪ 他のスキルへ機能を提供 ◦ リクエスタ(上で言うA) ▪ 他のスキルの機能を呼び出す
11 連携 開始 連携中 連携後 印刷インテントトリガー ディレクティブ送信 (StartConnection) 印刷インテントハンドラ レスポンスハンドラ
(SessionResumedRequest) 処理を続ける • リクエスタはconnectionエンドポイントに要求を投げる • プロバイダはAlexaが決めて、要求を受け渡す • プロバイダの実行結果をAlexaから受け取って処理を継続 Skill Connectionsの仕組み セッション切断 A B A 処理結果
今回はプリンタスキルと連携する リクエスタやってみた ※プロバイダだと両方作らないといけない ※プロバイダ側は特別な審査が必要らしい 12
13
14 リクエスタの実装 const continueIntentHandler = { ・・・ handle(handlerInput) { const
speakOutput = 'それではプリンタスキルを呼び出して印刷します。'; return handlerInput.responseBuilder .speak(speakOutput) .addDirective({ 'type': 'Connections.StartConnection', 'uri': 'connection://AMAZON.PrintPDF/1', 'input': { '@type': 'PrintPDFRequest', '@version': '1', 'title': 'サンプルのPDF', 'description': 'スキルコネクションズのサンプルのPDFです。', 'url': 'https://******.s3-ap-northeast-1.amazonaws.com/sample1.pdf' }, 'token': 'none' }) .getResponse();
15 const ConnectionsResponseHandler = { canHandle(handlerInput) { const request =
handlerInput.requestEnvelope.request; return request.type === 'SessionResumedRequest'; }, handle(handlerInput) { const statusCode = handlerInput.requestEnvelope.request.cause.status.code; const statusMessage = handlerInput.requestEnvelope.request.cause.status.message; console.log(`SessionResumedRequest: code: ${statusCode}, msg: ${statusMessage}`; let speechText; switch (statusCode) { case “200”: // 購入した speechText = "印刷が終わりました。ご利用ありがとうございました。"; break; case “204”: // ユーザキャンセル speechText = "またご利用くださいね。"; Break; ・・・ Default: // その他エラー speechText = "ごめんなさい、うまく行かなかったようです。"; break; } return handlerInput.responseBuilder.speak(speechText).getResponse(); }, };
16 ん?なんかこれ 見たことない?
ISPやってみた &VoiceflowでもISP スマートスピーカーミーティング #13 9/26 LT 再掲
18 課金 処理前 課金 処理中 課金 処理後 購入インテントトリガー ディレクティブ送信 (type=Connections.SendRequest)
購入インテントハンドラ レスポンスハンドラ (type=Connections.Response) getResponseで会話フロー をつなげる 商品・料金説明、 同意確認 認証コード確認 課金処理 • スキル側でやるのは購入処理の手前と後だけ • 購入処理も一連のやり取りもAlexa⇔ユーザでやってくれる スキル内課金のやりとり セッション切断 再掲
19 MonetizationServiceClient • 購入をMonetizationServiceClientにリクエスト const BuyEnglishPackIntentHandler = { ・・・ handle(handlerInput)
{ const locale = handlerInput.requestEnvelope.request.locale; const ms = handlerInput.serviceClientFactory.getMonetizationServiceClient(); return ms.getInSkillProduct(locale, ENGLISH_PACK_ID).then(function (product) { if (product.entitled === "ENTITLED") { const speechText = `既に${product.name} を購入しています。続けますか?`; const repromptText = `続けますか?`; return handlerInput.responseBuilder .speak(speechText) .reprompt(repromptText) .getResponse(); } else { return handlerInput.responseBuilder .addDirective({ type: 'Connections.SendRequest', name: 'Buy', payload: { InSkillProduct: { productId: ENGLISH_PACK_ID } }, token: 'correlationToken' }) .getResponse(); } }); } }; 再掲
20 .getResponse(); } else { return handlerInput.responseBuilder .addDirective({ type: 'Connections.SendRequest',
name: 'Buy', payload: { InSkillProduct: { productId: ENGLISH_PACK_ID } }, token: 'correlationToken' }) .getResponse(); } }); 再掲
21 ISPもAmazon Payも 内部的にはConnections
Skill Connectionsの良いところ 22 • 自分で実装しなくて良いのはやっぱり楽 ◦ ハードウェア連携は特に ◦ プロバイダが増えれば機能を増やせる •
ISPとかやってれば実装そんなに難しくない。 ◦ プロバイダ側への受け渡し部分とプロバイダ側 は勝手にやってくれる ◦ リクエスタは所定のフォーマットで投げて、 結果に応じて続けるだけ。 • プロバイダもAlexaがよしなに選んでくれるし、今 のところ、パターンも少ないので比較的かんたん。
Skill Connectionsの難しいところ 23 • 会話の流れがつかみにくい ◦ リクエスタとプロバイダが両方しゃべる。 ◦ 受け渡し時のAlexa側の発話もある。 ◦
テスト用のタスク(AMAZON.TestStatusCode) を使って確認 ◦ プロバイダ側独自のステータスコードも。 ◦ 実際にテストしながら発話の自然さをチェック。 • 連携時は、セッション切れるので要対応 ◦ Persistent Attribute • プロバイダ少なすぎ、実質プリンタだけじゃね?
いろいろしゃべる 24
いろいろしゃべる 25 リクエスタ側 プロバイダ側 ASK側
現在サポートされているタスク 26 • 印刷系 ◦ AMAZON.PrintImage ◦ AMAZON.PrintPDF ◦ AMAZON.PrintWebPage
• 予約系 ◦ AMAZON.ScheduleTaxiReservation ◦ AMAZON.ScheduleFoodEstablishmentRes ervation
27 その他つまづいたところ • 利用開始までのプロセスが長い ◦ プリンタのWiFi接続設定 ◦ プリンタ側のアカウント登録 ◦ アカウントリンク
◦ スキル有効化までのハードルが高い、ここでくじける人が一 定数いるはず • 情報がない・・・ ◦ DevSummit以来、特に話なくない? ◦ ドキュメントが少なすぎるし、サンプルも微妙 ◦ Githubのサンプルコード欲しい
28 モチベーションが・・・
29 なんで今日この話?
30 https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2019/12/Create-Custom-Connected-Skill-Experiences-with-Tasks-and-Direct-Skill-Connections
31 Custom Tasks & Direct Connections • Custom Tasks ◦
Skill Connectionsにおけるプロバイダーが提供する 機能のこと ◦ これまで限定された機能(プリンターへの印刷、レストラン/ タクシーの予約)しかなかったのが、自分で 定義できるようになった ◦ “ask api search-task/get-task” でタスクを探して使う • Direct Connections ◦ Skill Connectionsでは、Amazonが用意していたプロバイ ダー・タスクが選択される ◦ Direct Connectionsは、リクエスターがプロバイダー・タス クを選択できる
32 そして
33 Alexa Conversationsへ https://robotstart.info/2019/06/06/alexa-cross-skill-conversations.html
まとめ 3
35 まとめ • Skill ConnectionsでやってることはISPと似てる。 ISPやったことがあれば実装は難しくない、多分 • 現状ではユースケースが限定的。印刷ぐらいしかない 上、プリンタスキル使ってる人どんだけー •
でもCustom Tasks & Direct Connections出てきたら 可能性が広がるし面白くなるはず • 将来的なAlexa Conversationとか見据えて、単機能な スキル企画・開発に慣れておく そのうち役に立つかも、知らんけど
36 まとめ • Skill ConnectionsでやってることはISPと似てる。 ISPやったことがあれば実装は難しくない、多分 • 現状ではユースケースが限定的。印刷ぐらいしかない 上、プリンタスキル使ってる人どんだけー •
でもCustom Tasks & Direct Connections出てきたら 可能性が広がるし面白くなるはず • 将来的なAlexa Conversationとか見据えて、単機能な スキル企画・開発に慣れておく そのうち役に立つかも、知らんけど
お知らせ 4
38 2/9 AAJUG大阪 Alexaスキル開発ごった煮トーク
39 2/29 技術書典8 (Day1あ09) • 豪華執筆陣! • 165P、1000円(予定)
40 3/21 Voice Con Japan 2020
Thanks! Any questions?