Alexa スキル内課金　第4回　スキル内課金のお作法

#はじめに
前回はスキル内課金の購入後の処理について説明しました。
今回は、スキル内課金を含むスキルを作成するうえでのお作法について説明します。
アマゾンからデザインガイドがでており、そのガイド（お作法）が結構厳しいので、まとめておきます。

#今回実施する内容
スキル内課金を実施するうえでのガイドラインに従うための注意事項をまとめます。

#環境
OS:Windows 10 JP
Alexaスキル言語：Node.js
Editor：Visual Studio Code
Alexa developer console

#参考
・[Alexaスキルを使用した商品の販売](https://developer.amazon.com/ja/docs/custom-skills/sell-products-in-an-alexa-skill.html)
Alexzオフィシャルドキュメントの説明です。

・[商品、コンテンツ、サービスを購入できるスキルの要件](https://developer.amazon.com/ja/docs/custom-skills/requirements-for-skills-that-allow-purchases.html?ref_=pe_679090_102923190_pe_679090_102923190#digital)
スキル内商品の必要条件の説明です。

・[Alexaデザインガイド スキル内課金](https://developer.amazon.com/ja/docs/alexa-design/isp.html)
スキル内課金のデザインのベストプラクティスなどの説明です。


・[Alexa スキル内課金　第1回　スキル内課金の仕組みとスキル内商品レコード作成、読み込み](https://qiita.com/Mount/items/6710a7b897951273f780)
スキル内課金の仕組みの概要の説明です。

・[Alexa スキル内課金　第2回　スキル内商品の購入処理](https://qiita.com/Mount/items/8812a17827ac3f8d3c35)
スキル内商品の購入・キャンセルなどの説明です。

・[Alexa スキル内課金　第3回　スキル内商品購入後の処理](https://qiita.com/Mount/items/bbb6630002b640e30292)
スキル内商品購入後の処理方法の説明です。

#用語
##スキル内課金 (ISP)
スキルの中の課金の仕組みこと。
In-skill Purchasing

#前提条件
[Alexa スキル内課金　第1回　スキル内課金の仕組みとスキル内商品レコード作成、読み込み](https://qiita.com/Mount/items/6710a7b897951273f780)
[Alexa スキル内課金　第2回　スキル内商品の購入処理](https://qiita.com/Mount/items/8812a17827ac3f8d3c35)
[Alexa スキル内課金　第3回　スキル内商品購入後の処理](https://qiita.com/Mount/items/bbb6630002b640e30292)
の記事を読んでいる。

#スキル内課金とは
改めてスキル内課金について説明したいと思います。
まずそのコンセプトとして、有料スキルといったすべてが有料であるという考え方ではなく、スキルの一部がプレミアムサービスであり、有料であるという考え方です。
今どきの無料ゲームと同じです。始めるのは無料で、その後アイテムをかったりするとお金がかかるというオンと同じです。

その種類として、

- 買い切り型
- 消費型
- サブスクリプション型

があります。

#スキル内課金のお作法
それでは、お作法をまとめます。すべてではなく、大きいところでまとめます。
詳細は、Amazon公式の「[商品、コンテンツ、サービスを購入できるスキルの要件](https://developer.amazon.com/ja/docs/custom-skills/requirements-for-skills-that-allow-purchases.html?ref_=pe_679090_102923190_pe_679090_102923190#digital)」や「[Alexaデザインガイド スキル内課金](https://developer.amazon.com/ja/docs/alexa-design/isp.html)」を見てください。

- スキルの一部だけが有料であるスキル内課金であること。
    - すでに説明した通りで、すべて有料のスキル全課金はできません。
- 子ども向けスキルにはスキル内課金は設定できない。
    - 現時点では、16歳未満の子ｄも向けスキルにはスキル内課金は設定できません。
- 価格情報をスキル内に埋め込むことはできない。
    - スキル内課金の価格は、**スキル内商品**レコードに設定しますが、それ以外で価格をユーザーに伝えることはできません。これはAmazon側でセールを行ったりすることもあるためで、スキル内に価格を埋め込むと、そのセール中もセール価格にならなくなるためです。現時点ではプライム会員むけには20%オフになるようです。
- スキルの説明とサンプルフレーズは、ユーザーに購入方法について教えたり、プレミアムコンテンツの購入を促したりすることはできません。
    - スキルの説明はそのプレミアムコンテンツに何が含まれるかについてのみ説明できます。「スキルの説明とサンプルフレーズに・・・」が結構難しく、スキルの申請時に何度かAmazonから指摘を受けました。
    - 「スキルの説明はそのプレミアムコンテンツに何が含まれるかについてのみ説明できます。」ということなのですが、どこまで許容されるのか、いまだによくわかりません。「XXX機能を追加しました。（有料）」と記載したらNGでした。「有料」と記載するだけで購入を促しているのか？と思いますが、なかなかここは厳しいです。そのくらいは伝えておきたいですけどね。
    - 「サンプルフレーズ」に「XXXを購入して」（XXXはスキル内商品名）といったようなフレーズもNGでした。これは上記のお作法そのままなのでやむを得なかったかなと思いました。
- スキルのアップセルを実施したうえで購入につなげる。
    - アップセルは、スキルの宣伝をすることですが、宣伝をするときに「購入しますか？」と言えません。一度、「詳しく知りたいですか？」といった詳細説明を促したうえで、`Connections.SendRequest`で`Buy`や`Upsell`を設定することができます。**`Connections.SendRequest`を設定すると、Alexaが購入の説明を始めます。それに対してAlexaが「購入しますか？」と尋ねる仕組みになっているため、スキル内に「購入しますか？」といったIntentを作れず、あくまでアップセル（宣伝）だけする**ということだと思います。
- アップセルは一度に１商品のみ。
    - おそらくAlexaでの購入処理が1回につき1商品だけであることからこうなっているのだと想像します。
    - `Connections.SendRequest`で購入処理をAlexaに依頼するスキル内商品が１つしかないため、複数は取り扱えません。
    - ただし、「何が買えるの？」といったユーザーの発話に対して、商品名を答えるのはOKのようです。そこから、「XXXについて教えて」などの会話が始まれば、１つの商品の説明だけをして、他の商品の説明はできません。
- キャンセルや返金はスキル内に組み込む。
    - 購入済み商品の返金については必須とされており、これは買い切り型、消費型、サブスクリプション型のいずれでも組み込みが必要とされております。

#おわりに
今回は、スキル内課金のスキルを作成するうえでのお作法についてまとめました。
意外とこのお作法がスキル開発でネックになりますので、気を付けたいものです。