Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AlexaSkillのVUIを改善した話

euledge
April 28, 2021

 AlexaSkillのVUIを改善した話

JAWS-UG浜松 AWS勉強会 2021#4で話した資料です。

個人開発のAlexaスキルを改善するために行ったことの紹介

euledge

April 28, 2021
Tweet

More Decks by euledge

Other Decks in Technology

Transcript

  1. Alexa SkillのVUIを改善した話
    @eulede (kuroyanagi)
    JAWS-UG浜松 AWS勉強会 2021#4

    View Slide

  2. Kuroyanagi Hitoshi
    @euledge
    https://github.com/euledge
    黒 柳 仁
    自己紹介
    普段は SpringBoot(Java) + Vue.js でお仕事してます。
    開発チームの体制づくりのためのツール導入とか、フレームワークづくりとか
    最近はDDDとかAmplify+LINE APIに興味あり

    View Slide

  3. 袋井市のオープンデータ活用事例
    Alexaスキル「ゴミ出しふくろい」
    を掲載していただきました。

    View Slide

  4. Alexa Hosted Skill

    View Slide

  5. 今までの変遷
    2019/6 最初のバージョン公開
    2020/10 袋井市から実証実験に使いたいとの連絡
    放置していたので慌てて2020年のデータに対応
    2020/12 スキル名称を「ゴミ出しふくろい」に変更
    2021/2 街の名前を覚える機能追加
    2021/4 リマインド機能 EchoShow対応

    View Slide

  6. https://alexa-skills.amazon.co.jp/apis/custom/skills/amzn1.ask.skill.2a344529-21df-4d41-9d39-cce634cf07ed/launch -

    View Slide

  7. 川井はカワイイ?
    川井(かわい)をアレクサが ‘かわいい’ と間違える
    東通り(ひがしどおり) ? 東同笠(ひがしどうり)

    View Slide

  8. 値 同義語
    東通り ひがしどおり、ひがしどうり、ひがしどーり、
    東通り、東通
    東同笠 ひがしどおり、ひがしどうり、ひがしどーり、
    東通り、東通
    値 同義語
    川井東 かわいい、かわい、かわいひがし、かわいいひ
    がし、川井

    View Slide

  9. えっ、また聞かれるの?
    昨日 今日

    View Slide

  10. let persistAttributes =
    (await attributesManager.getPersistentAttributes()) || {};
    persistAttributes.lastAccess = dayjs().toISOString();
    persistAttributes.streetName = streetName;
    attributesManager.setPersistentAttributes(persistAttributes);
    await attributesManager.savePersistentAttributes();
    Alexa Skill KitでDynamoDBに対して
    attributesManagerでアクセスできる。

    View Slide

  11. 町名の発音はAlexaには、むづかしい
    見取
    初越
    西同笠
    木原
    上新池
    みどり
    はづこし
    にしどうり
    きわら
    かみにいけ

    View Slide

  12. 読み仮名も一緒に渡して読ませる
    function getPronounceTown(streetName) {
    const street = area_days.find((item) => item.street === streetName);
    const streetPronunciation = street.streetPronunciation;
    return `${streetPronunciation}as>`;
    }
    const speechText = `${getPronounceTown(resolutionName)}の次の収集日
    は ${collectionDate} です。
    次のご利用の時にも
    ${getPronounceTown(resolutionName)}の収集日をお知らせ
    しますか?`;
    {"street": "木原",
    "area": "袋井西",
    "streetPronunciation": "木原(きわら)",
    "areaPronunciation": "袋井西",
    "alias": "",
    "days": "20210309 20210324 20210408 20210422
    },
    {
    "street": "土橋",
    "area": "袋井西",
    "streetPronunciation": "土橋(つちはし)",
    "areaPronunciation" : "袋井西",
    "alias" : "",
    "days" : "20210309 20210324 20210408 20210422
    },
    {
    "street" : "可睡" ,
    "area" : "袋井北" ,
    "streetPronunciation" : "可睡(かすい)" ,
    "areaPronunciation" : "袋井北",
    "alias" : "かすい" ,
    "days" : "20210311 20210326 20210413 20210427
    }

    View Slide

  13. 音声の補助としてディスプレイも使う

    View Slide

  14. いや、この前聞いたけど忘れちゃった
    Alexaは基本的には自発的には
    しゃべってくれない。
    前の日になったら
    教えてほしいな

    View Slide

  15. リマインダーに追加するにはアクセス権の許可が必要
    const client = handlerInput.serviceClientFactory.getReminderManagementServiceClient();
    const reminderRequest = {
    trigger: {
    type: "SCHEDULED_ABSOLUTE", // 指定時刻にリマインド
    scheduledTime: remindAt,
    },
    alertInfo: {
    spokenInfo: {
    content: [
    {
    locale: "ja-JP",
    text: `明日は${streetName}の不燃物収集日です。`,
    },
    ],
    },
    },
    pushNotification: {
    status: "ENABLED",
    },
    };
    console.log(JSON.stringify(reminderRequest));
    const reminderResponse = await client.createReminder(reminderRequest);
    console.log(JSON.stringify(reminderResponse));

    View Slide

  16. 2. 申請されたスキルは、スキルがリマインダーにアクセスする必要がある理由に関する詳細情報をユーザーに提示していません。
    スキルはこちらのドキュメントにリストされているサンプルメッセージに則った音声プロンプトを提供し、
    またユーザーがパーミッションを許可する為のカードを提示する必要があります。
    カードについての詳細はこちらを参照してください。
    補足:
    スキルの権限について、なんの権限が必要なのかどうして必要なのかという理由をユーザーに提示しておりません。
    3. スキルは、各リマインダーまたはリマインダーの一連を設定する際に、ユーザーの許可を取得しませんでした。
    スキルとユーザー間の対話の中で、スキルが明確な許可を得ていることを確認してください。
    例:毎週のトーナメントのために、リマインダーを週毎に設定しますか?
    リマインダ―の詳細については、こちら を参照してください。リクエスト例については こちら を参照してください。
    リマインダーに関する申請時のフィードバック

    View Slide

  17. Alexa Skill開発の情報ソース
    • Alexa道場 Alexa Skills Kit: Webinars (amazon.com)
    • Alexa Skills Kit (ASK) (日本語) - Forums (amazon.com)
    • Slack alexa-jp

    View Slide

  18. Alexa Skill開発者にお得な特典!
    AWS Promotional Credits for Alexa - Amazon Alexa

    View Slide