Alexa音声アシスタント特集2018年04月26日SIN(335)36この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。SDKの使い方を、順に紹介しているものです。(対象は、Node.js用のみです。Java用には触れておりません)その4では、スキル属性(セッション情報等)について少し詳しく見ていきたいと思います。SDKでは、セッション中や、セッションを跨いだデータの保存が可能です。Attributesという概念で、その生存期間に応じて次の3種類に分類されています。DynamoDB等が必要)以下、それぞれについて見ていきます。attributesは、一回のリクエストの中でのみ有効です。Alexaからのリクエストが到着した時点では空であり、レスポンスを返した時に破棄されます。利用場面の一例としては、追加の情報やヘルパークラスを使用したい場合に、インターセプターでこれを注入し、ハンドラ内で既存の機能のように利用することです。下記の例は、インターセプタで、ローカライズ用のヘルパークラスを作成し、それをハンドラ内で利用しているものです。Ver1にあったローカライズ用のリソースをVer2でそのまま使うようになっています(必須ハンドラー、エラー制御などは省略されています)「alexa/skill-sample-nodejs-howto」を参考にさせて頂きました。}};リソースが変化していることを確認できます。attributesは、セッション継続中に有効です。保存された情報は、レスポンスでAlexaサービスに渡され、次のリクエストで、再びリクエストに含まれるようになります。外部ストレージなどは一切必要ありません。例として、セッション中に数値を記憶する、下記のようなスキルを作成してみました。U:アレクサ、テストスキルをスタートしてA:現在記憶している数字は4です。2乗しますか?U:はいA:現在記憶している数字は16です。2乗しますか?U:はいA:現在記憶している数字は256です。2乗しますか?U:いいえA:終わります。下記が、その実装です。`現在記憶している数字は${counter}です。}};セッション期間中だけ、情報が保存されていることを確認できます。attributesは、セッションのライフサイクルを超えてデータを永続化します。attributesを使用するためには、インスタンスの生成時にPersistenceAdapterの設定が必要であり、具体的には、withTableName()の呼び出しになります。withTableName()を使用するために、スキルの生成もAlexa.SkillBuilders.standard()を使用することになります。`現在記憶している数字は${counter}です。}};永続化データは、Id(UserId)をキーにしてDynamoDBに保存されています。実行している様子です。スキルが終了してもデータが保持されている様子が分かります。最後に今回は、スキル属性(セッション情報等)について確認してみました。情報の生存期間が明確となっていますので、それに応じた記述が必要になります。Ver1では、ステートという概念が有り、インテント名とステート名でルーティングを行っていましたが、Ver2には、その機能はありません。同様の仕組みを使用する場合は、セッション情報に保存して、独自にステートの仕組みを実装する必要があります。ディスプレイ表示コメントは受け付けていません。3,356,995CX事業本部の平内です。最近は、音声で操作するアプリの開発を担当させて頂いてます。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。今日はオフィスに用があるので、通勤ラッシュを避けて出社しました。この子は新メンバーのさめくんです。在宅勤務が推奨されているのでオフィスが閑散としており、すこしさみしそうです。使いたいときの注意点を書きました。本が出ていたので読んでみたところよかったので紹介させていただきます。