TescoとのAlexaスキル統合。テスコの食料品のショッピングをボイスコントロールすることができます。声のみを使用して、食料品バスケットに製品を追加することができます。
現時点では、バスケットに製品を追加することだけができます
わかりました、このプロジェクトのクローンから始めましょう。
git clone https://github.com/onegambler/alexa-tesco-skill.git
Tescoは、食料品バスケットに製品を追加するための公開APIを提供していません。幸いなことに、IFTTTには、私たちが探しているものを正確に提供するTesco統合があります。それでは、IFTTTを使用してアカウントを作成し(持っていない場合)、仕事をするためにアプレットを追加しましょう。
My Applets
をクリックしてから、 New applet
クリックしますthis
をクリックして、 Webhooks
を検索します。Connect
をクリックして、 Receive a web request
てサービスに許可を与えますEvent Name
がtesco_search
を設定します。これは同じである必要があります!create trigger
をクリックしますthat
青をクリックして、 Tesco
を検索してくださいConnect
をクリックしてからSearch for and add product to basket
サービスに許可を与えますWhat to search for
で{{Value1}}
を書き込みます。 ingredients
をクリックしてからvalue1
クリックすることもできます。Create action
をクリックしてからFinish
最後に、このように見えるアプレットが必要です。
アプレットを作成したら、Maker URLをコピーする必要があります。したがって、Maker Webページに移動します。ここで、[設定]をクリックすると、アカウント情報が表示されます。このようなもの:
Account Info
Connected as ...
URL https://maker.ifttt.com/use/<KEY>
Status active
<KEY>
をコピーして、後で使用する必要があるため、これをどこかに保管してください。
次に、どの製品を検索してバスケットに追加できるかをスキルに知らせる必要があります。プロジェクトでは、file products.yml
を開きます。最も一般的な食料品のリストが含まれています。 Alexaは、リストに含まれる製品のみを理解します。 Tesco.comの食料品検索バーを使用して見つけることができる限り、必要な製品を追加できます。また、IFTTTアクションに注意する必要があります
検索テキストに一致する製品をTesco.comを検索し、最初の結果をバスケットに追加します。
このため、より正確なアクションが必要で、間違ったアイテムが追加されないようにしないようにする場合は、リストにIDを指定できます。そうするために、Tesco Groceries Webページにアクセスして、必要な製品のIDを取得します。各製品ページでURLにIDを見つけることができます
http://www.tesco.com/groceries/product/details/?id=264245536
この場合、 264245536を使用して、以下に示すようにproducts.yml
に追加します。
products :
- banana :
id : ' 275280804 '
aliases :
- bananas
- cherry tomatoes :
- milk :
id : ' 260569996 '
製品IDを指定することにより、リストをさらにカスタマイズできます。
- mens deodorant :
id : ' 272227552 '
aliases :
- Roberto's deodorant
製品がマッピングされたら、保存して次のステップに移動できます。
NPMにノードバージョン6をインストールしています。まだ行っていない場合は、適切に機能することを確認してください。
次に、フォルダーAlexa-Tesco-Skillにcd
使用して実行します
npm install
すべての依存関係をダウンロードします。
このプロジェクトには、ビルドプロセスを簡単にするためのいくつかのgulp
スクリプトが付属しています。それでは、グローバルにインストールしましょう
npm install -g gulp
OK、これでプロジェクトをzipファイルにビルドすることができます。これは、ラムダにアップロードできます。
gulp build
すべてが問題になった場合は、 dist
フォルダーとdist.zip
ファイルが表示されるようになりました。
前に述べたように、AWSアカウントが必要であるため、コードをAWS Lambdaに展開するため、リクエストを処理します。最初の1,000,000件のリクエストは無料であるため、ペニーを使わないのに十分です。
チュートリアルがたくさんあるので、詳細には入りません。
セットアップする前に、注意してください!
「英語(米国)スキルのためのN.Virginiaまたは英語(英国)およびドイツ語のスキルのためのEU(アイルランド)地域を選択したことを確認してください。この地域は右上隅に表示されます。ラムダ機能を正しいものに提供します。地域は潜伏期の問題を防ぎます」
AlexaスキルのためにLambdaをセットアップするための有用なリンクを次に示します。AlexaスキルパラグラフのLambda関数の作成に従ってください。
メモ
Blank Function
としてラムダを作成しますAlexa Skills Kit
トリガーとして構成しますindex.handler
ハンドラーとして設定しますだからこのようなもの
適切に動作するためには、ラムダにはいくつかの環境変数が必要です。 general
タブでは、次のことが必要です。
ダイアログの右上隅にあるLambda Arn値を忘れないでください。後で必要になります。
Lambdaをセットアップすると、新しいAlexaスキルを作成するにはAmazon Developerアカウントが必要です。
タブスキルSkill Information
Name
とInvocation Name
を追加します。 2つ目は、スキルをアクティブにするために使用する名前であることに注意してください。私はTesco
使用しているので、「アレクサにテスコに尋ねる」と言うことができますが、それは完全にあなた次第です。Audio Player
のno
をクリックしますタブInteraction Model
gulp build
コマンドを実行することを確認してください。それは、 products.yml
からファイルを生成するため、スキルのセットアップに必要ですdist/speechAssets/IntentSchema.json
のコンテンツをIntent Schema
フィールドに貼り付けますSample Utterances
フィールドにdist/speechAssets/SampleUtterances.txt
の内容を貼り付けます。GROCERY
呼ばれるCustom Slot Type
を作成し、ファイルdist/speechAsset/slot-types/GROCERY
のコンテンツを追加します。カスタムスロットの詳細については、こちらをご覧ください。タブConfiguration
AWS Lambda ARN
Service Endpoint Type
として設定し、正しい地理的領域(Lambdaと同じ)を選択し、Lambda Arnを入力フィールドに挿入します。他のタブを無視し(スキルを公開したくない)、 Save
をクリックします
より詳細な指示は、次のように見つけることができます:スマートホームスキルを作成する手順
わかりました、ほとんどそこに。最後のステップとして、ファイルをAWS Lambdaに展開する必要があります。このプロジェクトには、 node-aws-lambda
が付属しています。 Lambdaの展開に使用されるノードユーティリティ。詳細については、こちらをご覧ください。私は正直にそれを手動で行うことを好むので、アクセスキーやトークンに対処する必要はありません。それでは、新しく作成されたLambda(AWSコンソールページ)に戻りましょうdist.zip
ファイルをアップロードしましょう。次に、 save
をクリックすると、準備ができている必要があります。牛乳を加えて、それが機能するかどうかを確認してみてください!
これがあなたがスキルを使って直面するかもしれないいくつかの問題です