[Alexa] Pollyを使ってスキルのシナリオを実演する丁寧なヘルプを作る

PollyのTakumi君とAlexaに会話してもらい、スキルのヘルプやチュートリアルをわかり易くしてみました。
2019.03.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Alexaのカスタムスキルでは、スキルの主要な機能や操作方法を補足するヘルプインテントを提供する必要があります。

今回は、Amazon Pollyの声を使ってスキルのシナリオを実演する、よりユーザーフレンドリーなヘルプを作るテクニックをご紹介します。

Amazon PollyをAlexaスキル内で利用する

【新機能】これでスキル内で流暢な英語も話せる!Alexaスキルの音声にPollyが使えるようになりました! #Alexa 【祝GA】

上記エントリにもあるように、昨年10月のアップデートによりスキル内でAmazon Pollyの声がカジュアルに利用できるようになりました。 具体的には、以下のようにSSMLのvoiceタグによってPollyの声で喋らせることができます。

<speak>
    こんにちは。私はAlexaです。
    <voice name="Mizuki">こんにちは。私はMizukiです。</voice>
    <voice name="Takumi">こんにちは。僕はTakumiです。</voice>
    <voice name="Kendra"><lang xml:lang="en-US">Hello, My name is Kendra.</lang></voice>
</speak>

Pollyを使うことにより、デフォルトの声を別の声に置き換えたり、別の言語のネイティブな発話ができるようになりましたが、第三者の声を気軽に組み込めるようになったことで、スキル内で会話の実演をさせることができます。

これを応用し、スキルのヘルプでユーザー(演:Polly)とAlexaの会話を実演させ、スキルの正しい利用方法を提供してみます。

Pollyを使ったヘルプインテントのハンドラ

以下のようなシナリオのスキルについて、ヘルプインテントでそのまま会話を実演させてみます。

A: クラメソ喫茶店へようこそ。ご注文は何になさいますか?  
U: コーヒーをお願いします。  
A: わかりました。いくつご注文でしょうか?  
U: 2つ。  
A: コーヒーを2つですね。少々お待ちください。

AMAZON.HelpIntentハンドラのコード(Node.js 8.10 + ASK-SDK)は下記です。

const HelpIntentHandler = {
  canHandle(handlerInput) {
    return handlerInput.requestEnvelope.request.type === 'IntentRequest'
      && handlerInput.requestEnvelope.request.intent.name === 'AMAZON.HelpIntent';
  },
  handle(handlerInput) {
    const speechText = `クラメソ喫茶店スキルでは、飲み物をオーダーすることができます。<break time="500ms"/>
      <voice name="Takumi">アレクサ、クラメソ喫茶店を開いて。</voice><break time="500ms"/>
      クラメソ喫茶店へようこそ。ご注文は何になさいますか?><break time="500ms"/>
      <voice name="Takumi">コーヒーをください。</voice><break time="500ms"/>
      いくつご注文でしょうか?><break time="500ms"/>
      <voice name="Takumi">1つお願いします。</voice><break time="500ms"/>
      コーヒーを1つですね。少々お待ち下さい。<break time="1000ms"/>
      以上のような流れで飲み物を注文することができます。<break time="300ms"/>それでは、ご注文は何になさいますか?`;

    return handlerInput.responseBuilder
      .speak(speechText)
      .reprompt(speechText)
      .getResponse();
  }
};

実際の発話はこんな感じです。

おわりに

Pollyの声を活用することで、スキルのシナリオを実演するユーザーフレンドリーなヘルプを作ってみました。 このような会話の実演は、ヘルプだけでなく初回起動時のチュートリアルとしても使えそうです。

会話の実演はスキルの正しい利用方法を表現できますが、以下のような点に注意する必要がありそうです。

  • スキルのTTS(テキストの読み上げ)応答には10,000文字の文字数制限がある
  • 簡潔でない応答(長過ぎる会話の実演)はユーザーエクスペリエンスを損ねる可能性がある

Alexaのスキルを公開する場合、ヘルプの用意が必須となりますが、本来はヘルプを積極的に使わなくてもスムーズに利用できるようなVUIが理想です。 あくまでヘルプはスキル利用の補助として考え、必要に応じて本エントリのようなテクニックを活用するのも良いかもしれません。

それでは。