次のフローで Alexa スキルを作成しました。
LAUNCH -> AccountLinkingIntent -> CampaignIntent
では、現在、アカウントがすでにリンクされている場合AccountLinkingIntent
に転送しています。CampaignIntent
これまで、すべてが正常に機能しています。ActiveContactIntent
ここで、フローが次のようになるように、別のインテントを追加する必要があります。
LAUNCH -> AccountLinkingIntent -> CampaignIntent / ActiveContactIntent
つまり、Fromは、AccountLinking
どの Intent にルーティングするかを決定する必要があります。
呼び出しは次のようになります (CampaignIntent):
Alexa, ask <invocation_name> to get my latest campaign result
または (ActiveContactIntent)
Alexa, ask <invocation_name> who is my most active contact
発話に基づいて、Alexa に行き先を伝える必要があります。これまでのところ、次のものがありますAccountLinkingIntent
... return this.toIntent("CampaignIntent"); ...
しかし今、私はこれと同じことを決める必要があります:
...
if( ... ) {
return this.toIntent("CampaignIntent");
} else {
return this.toIntent("ActiveContactIntent");
}
...
IntentName
次のような同じことで確認できるように、発話で取得する方法はありますか。
...
if( intent_name_by_utterance === "CampaignIntent" ) {
return this.toIntent("CampaignIntent");
} else {
return this.toIntent("ActiveContactIntent");
}
...
または、おそらく、変数を渡すことが許可されている場合は、メソッドintent_name_by_utterance
の引数として値を渡すこともできます!toIntent
return this.toIntent(intent_name_by_utterance);
アップデート:
インテント名が返されているかどうかを確認するために、次のことを試しました。
LAUNCH() { return this.toIntent("LinkAccountIntent"); }、
async LinkAccountIntent() { const intent_name = this.$request.getIntentName(); this.tell( Current intent is: ${intent_name}
); }、
次の 2 つの方法でスキルを呼び出しました。
Alexa, ask <invocation-name> to give me my latest campaign results
Alexa, ask <invocation-name> who is my most active contact
give me my latest campaign results
ANDwho is my most active contact
は、それぞれの意図に対する発話です。
テストには Alexa Test コンソールを使用しています。どちらの場合も、インテント ( this.$request.getIntentName()
) の名前を期待していましたが、最終的には
うーん、私はそれを知りません。
私の意図は、その呼び出し名を使用してスキルを目覚めさせることによって、その発話によって直接インテントを呼び出すことです。
なにか提案を?