0

次のフローで 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 resultsANDwho is my most active contactは、それぞれの意図に対する発話です。

テストには Alexa Test コンソールを使用しています。どちらの場合も、インテント ( this.$request.getIntentName()) の名前を期待していましたが、最終的には

うーん、私はそれを知りません。

私の意図は、その呼び出し名を使用してスキルを目覚めさせることによって、その発話によって直接インテントを呼び出すことです。

なにか提案を?

4

1 に答える 1