Sensing機能を備えたデバイスでは、ユーザーの存在を検出できます。extensionを使用すると、検出されたユーザーに関する情報、たとえばデバイスを基準としたユーザーの位置を取得できます。スキルでは変化に対応することもできます。エンゲージメントが最も高いユーザーが変化したときに対応できます。このextensionを使用するには、requestedExtensionsに追加します。extensionを参照してください。extensionは、ユーザーの存在を検出できるデバイスで動作します。次のことを行うことができます。デバイスがユーザーを検出したかどうかを判断するためのプロパティを取得し、デバイスを基準としたユーザーの位置を把握します。イベントハンドラーを使用して、デバイス状態が変化したときやユーザーが検出されたときに対応します。エンゲージメントが最も高いユーザーが変化したとデバイスが判断したときに対応できます。extensionでは、デバイスを動かしたり、プライマリユーザーを追跡するかどうかについて設定したりするためのコマンドは一切使用できません。extensionを使用します。extensionでは、プライマリユーザーに関する情報を得ることができます。プライマリユーザーとは、デバイスを使用する可能性が最も高いユーザーのことです。プライマリユーザーを確認するアルゴリズムはデバイスごとに異なり、さまざまな要因によって変化します。プライマリユーザーに関する情報を取得するには、ライブデータプロパティを使用します。extensionのプロパティとイベントハンドラーを使用するには、以下を実行する必要があります。extensionをスキルマニフェストのrequestedExtensionsプロパティに追加します。extensionをAPLドキュメントのextensionsプロパティに追加して、ドキュメントで明示的にリクエストします。ドキュメントのsettingsプロパティで、extension設定のドキュメントレベルのコンフィギュレーションを行います。extensionALEXA_EXTENSIONインターフェースには、autoInitializedExtensionsとrequestedExtensionsという2つのプロパティがあります。extensionをrequestedExtensionsプロパティに追加します。このextensionには、autoInitializedExtensionsでコンフィギュレーションを行う必要がある設定値はありません。extensionのコンフィギュレーションが行われたスキルマニフェストを示しています。extension設定の詳細については、スキルマニフェストでextensionをリクエストするを参照してください。開発者コンソールでスキルマニフェストのコンフィギュレーションを行うこともできます。extensionのスキルのコンフィギュレーションを行うには開発者コンソールを開き、設定するスキルの編集をクリックします。ビルド>インターフェースページに移動します。Languageインターフェースを有効にします。v.10を選択します。このオプションを選択すると、スキルマニフェストのrequestedExtensionsプロパティが更新されます。インターフェースを保存、モデルをビルドの順にクリックして、対話モデルを再ビルドします。Sensingイベントハンドラーおよびプロパティを使用するには、ドキュメントのextensionsプロパティでextensionをリクエストする必要があります。スキルマニフェストでrequestedExtensionsにextensionを追加した場合も、このリクエストが必要です。extensionをリクエストし、その名前をEntitySensingに設定します。次に、ドキュメントで"EntitySensing"の名前を使用して、設定、プロパティ、イベントハンドラーを参照します。extensionをリクエストする方法の詳細については、APLドキュメントでextensionをリクエストするを参照してください。extensionは、すべてのデバイスでサポートされるわけではありません。ユーザーのデバイスでextensionがサポートされるかどうかは、ドキュメントおよびコードで確認します。extensionがサポートされるかどうかを確認するには、ドキュメントでenvironment.extension変数を使用します。extensionsプロパティでnameにEntitySensingを使用したとします。Sensingがサポートされていれば、次のデータバインディング式でtrueが返されます。${environment.extension.EntitySensing}データバインディング式は、条件ステートメントとwhenプロパティで使用できます。コードでは、スキルに送信されるリクエストのcontext.Extensions.availableプロパティに、サポートされるextensionsが指定されています。このプロパティには、使用可能なextensionのURIが各項目のキーに指定されたマップが含まれます。extensionをサポートするデバイスからのリクエストを示しています。{}}context.Extensionsプロパティには、次の条件の両方を満たすextensionsが含まれます。スキルマニフェストのrequestedExtensionsプロパティでリクエストされていること。デバイスでサポートされていること。extensionには、次の設定があります。EntitySensingStateデータバインディングに使用する名前。PrimaryUserデータバインディングに使用する名前。APLドキュメントでこれらのコンフィギュレーションを行うには、settings.AssignedNameを使用します。extensionに割り当てた名前です。設定はすべて必須です。次の例では、extensionにEntitySensingという名前を割り当てた後、settings.EntitySensingでプロパティentitySensingStateNameおよびprimaryUserNameを設定しています。{}}entitySensingStateNameentitySensingStateNameプロパティを、グローバルのデータバインディングコンテキストでEntitySensingStateにアクセスするために使用する名前に設定します。entitySensingStateNameがない場合、または空の文字列に設定されている場合は、EntitySensingStateプロパティにアクセスできません。次の例は、entitySensingStateNameをMyEntitySensingStateに設定してから、EntitySensingStateプロパティにアクセスする方法を示しています。コードをコピークリップボードにコピーされました。}}primaryUserNameprimaryUserNameプロパティを、グローバルのデータバインディングコンテキストでPrimaryUserプロパティにアクセスするために使用する名前に設定します。primaryUserNameがない場合、または空の文字列に設定されている場合は、PrimaryUserプロパティにアクセスできません。次の例は、primaryUserNameをMyPrimaryUserに設定してから、PrimaryUserプロパティにアクセスする方法を示しています。コードをコピークリップボードにコピーされました。extensionでは、次の静的環境プロパティが追加されます。デバイスの水平方向の視界の範囲。Sensingサービスのバージョン。デバイスの垂直方向の視界の範囲。Sensing環境オブジェクトの構造の例を次に示します。Sensingの水平方向の視界の範囲を定義します。このプロパティは、デバイスごとに異なります。Sensingサービスのバージョンを表します。versionは、インストール済みのextensionのビルドとリリースの詳細を報告する場合に便利です。Sensingの垂直方向の視界の範囲を定義します。このプロパティは、デバイスごとに異なります。extensionにより、データバインディングコンテキストにライブデータプロパティが追加されます。ライブデータプロパティは、APLドキュメントのライフサイクル中に変更できるデータオブジェクトです。extensionにより、データバインディングコンテキストに次のライブデータオブジェクトが追加されます。Sensing機能を表します。検出されたユーザーのうち、デバイスとのエンゲージメントが最も高いユーザーについて報告します。ライブデータの詳細については、Extensionのライブデータを参照してください。Sensingの機能を表します。settingsでentitySensingStateNameプロパティを設定する必要があります。entitySensingStateNameがない場合、または空の文字列が含まれている場合、EntitySensingStateは使用できません。EntitySensingStateには、次のプロパティがあります。読み取り可能なエラーメッセージ。エラーがない場合は""。エラーがない場合は0。完全なEntitySensingStateデータバインディングコンテキストの構造の例を次に示します。Sensingのデバイスエラーに関する情報を提供します。エラーが発生すると、errorCodeは0以外のコード、errorはエラーに関する説明を報告します。デバイスの動作中にエラーが発生していない場合、errorCodeは0を返し、errorは空の文字列を返します。errorの説明は、デバイスごとに異なります。エラーが発生するのは、さまざまな条件のためにデバイスが検出を行えない場合や、デバイスで機械的な障害が発生した場合です。エラーの一般的な原因は次のとおりです。物理的な障害物がある光が少ないデバイスが「おやすみモード」になっているユーザーがデバイスのカメラのシャッターを閉じたerrorCodeが0でない場合は、デバイスの機能が制限されます。エラーを検出すると、デバイスは、errorCode条件がクリアされたかどうかを定期的に確認します。Sensingの通常の動作が再開されます。errorCodeの値が変化すると、OnEntitySensingStateChangedイベントがトリガーされます。Alexaデバイスでは、次のerrorCodeとそれに対応するerrorプロパティを使用できます。errorの説明とerrorCodeの値は、デバイスごとに異なります。このため、デバイスによっては、別の値が示される場合があります。カメラは正常に動作しています。カメラに問題があるため、デバイスがユーザーを見つけることができません。closedこれらのエラー値は、デバッグ目的で使用してください。errorの文字列は、ローカライズされません。このため、errorやerrorCodeの値は、ユーザーに表示しないでください。PrimaryUserPrimaryUserライブデータオブジェクトは、デバイスとのエンゲージメントが最も高いユーザーを表します。エンゲージメントアルゴリズムは、デバイスごとに異なります。settingsでprimaryUserNameプロパティを設定する必要があります。primaryUserNameがない、または空の文字列が含まれている場合は、PrimaryUserオブジェクトを使用できません。PrimaryUserには、次のプロパティがあります。デバイス割り当てのエンティティID。ユーザーが検出されない場合、文字列は空です。ユーザーがウェイクワードを発話したことを示します。デバイスがユーザーを検出したことを示します。activeユーザーを表すPrimaryUserデータバインディングコンテキストの構造の例を次に示します。}}デバイスがユーザーを検出しなかった場合のPrimaryUserデータバインディングコンテキストの例を次に示します。}}idPrimaryUser.idプロパティは、デバイスにより割り当てられた、最後にウェイクワードを発話したユーザーのIDを返します。デバイスがユーザーを検出できない場合、プロパティは空の文字列を返します。割り当てられたidは、デバイスがユーザーを認識できなくなってから一定期間持続します。この期間は、デバイスによって異なります。ユーザーが視界から消えてから再度視界に入ると、デバイスはそのエンティティを既知のエンティティとして認識することを試み、同じid値を割り当てます。デバイスがそのユーザーを認識できない場合は、新しいエンティティIDが割り当てられます。isActiveユーザーがウェイクワードを発話した場合はtrue、それ以外の場合はfalseを返します。デバイスで検出されたユーザーがウェイクワードを発話しなかった場合、そのユーザーは、アクティブではなく、エンゲージされていると見なされます。isSeenデバイスがユーザーを検出し、そのユーザーがデバイスの観測可能範囲内にいる場合は、trueを返します。エンティティが検出されなくなった場合、またはエンティティidが割り当てられていない場合は、falseを返します。EntitySensingState.errorCodeが0でない場合、PrimaryUser.isSeenプロパティはfalseを返します。ユーザーのisSeen値が変化すると、onPrimaryUserChangedイベントがトリガーされます。poiseユーザーの位置が記述されたオブジェクトを返します。poiseオブジェクトには、次のプロパティがあります。中心位置からの角度位置。表示位置からの角度位置。poise.absoluteAngleは、デバイスの中心位置を基準にしたエンティティの角度位置を表します。poise.relativeAngleは、画面を基準にした角度位置を表します。デバイスの画面が回転しない場合は、同じ角度と相対位置が返されます。デバイスがユーザーを感知できない場合、isSeen値はfalseを返し、poise.absoluteAngle値とpoise.relativeAngle値は、最後に認識されたユーザーの位置を表します。エンティティが割り当てられていない場合、これらの値は未定義です。PrimaryUser.poise値が変更されると、onPrimaryUserChangedイベントがトリガーされます。extensionでは、新しいextensionコマンドは追加されません。extensionでは、新しいextensionイベントハンドラーが追加されます。extensionで生成されるイベントに対応するには、APLドキュメントの最上位のプロパティにハンドラーを追加します。ハンドラー名には、AssignedName:EventHandlerNameを使用します。extensionに割り当てた名前、EventHandlerNameはハンドラーの名前です。extensionの名前をEntitySensingにした場合、OnEntitySensingStateChangedハンドラーからイベントに対応するには、EntitySensing:OnEntitySensingStateChangedを使用します。OnEntitySensingStateChangedEntitySensingStateのプロパティが変更されたときに呼び出されます。EntitySensingStateプロパティが変更されると、OnEntitySensingStateChangedイベントがトリガーされます。OnEntitySensingStateChangedハンドラーでは、イベントコンテキストに次の2つのプロパティが追加されます。変更されたEntitySensingStateプロパティのサブセット。EntitySensingStateプロパティの完全なコレクション。Sensingの状態を表します。これには、イベントの影響を受ける値も含まれます。EntitySensingStateプロパティのリストについては、EntitySensingStateを参照してください。生成されるイベントの形式は次のようになります。}}このイベントハンドラーのコマンドは、常に高速モードで実行されます。OnPrimaryUserChanged次のようなPrimaryUserの変更が発生すると、呼び出されます。Poiseを除くすべてのPrimaryUserプロパティが変更されたとき。デバイスが新しいPrimaryUserを検出し割り当てたとき。デバイスが既存のPrimaryUserを検出しなくなったとき。OnPrimaryUserChangedハンドラーでは、イベントコンテキストに次の2つのプロパティが追加されます。変更されたPrimaryUserプロパティのサブセット。PrimaryUserプロパティの完全なコレクション。このプロパティ値は、イベント時のプライマリユーザーを表します。これには、イベントの影響を受ける値も含まれます。OnPrimaryUserChangedハンドラーでは、イベントコンテキストに次の2つのプロパティが追加されます。生成されるイベントの形式は次のようになります。