添加一些上下文Ezequiel Jadib答案。我遇到了類似於下面鏈接中提到的問題的要求。另外,使用提供給相同問題的answer之一。
Calling back Luis from a forward dialog
雖然上述問題被標記爲複製到目前,我覺得路易斯上下文從這個問題缺少。
如果Activity
而不Channel
,From
和Recipient
信息創建的,你可以在創建回覆一些例外結束。所以,下面的代碼將幫助您創建正確的活動,並移交到路易斯
路易斯意向方法
[LuisIntent("PerformSearch")]
public async Task Search(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
{
var msg = await activity;
msg.Value = result;
await context.Forward(new SearchDialog(), ResumeAfterSearchPerformed, msg, CancellationToken.None);
}
恢復方法後轉發的對話框
private async Task ResumeAfterSearchPerformed(IDialogContext context, IAwaitable<object> result)
{
var msg = await result;
var userSearchString = msg.ToString();
if (userSearchString.Equals("searchCompleted", StringComparison.InvariantCultureIgnoreCase))
{
context.Wait(MessageReceived);
}
else
{
// At this point send the message back to LUIS MessageReceived
// method to re-identify the intent and trigger the method
Activity myActivity = (Activity)context.Activity;
myActivity.Text = userSearchString;
await MessageReceived(context, Awaitable.FromItem(myActivity));
}
}
之前設置正確的消息
通過以上操作,您可以輕鬆地創建正確水合的回覆Activity
Activity reply = ((Activity)message).CreateReply();
reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
看起來像......每當我檢查出NodeJS的例子,它們似乎提供了更多的關於堆棧管理的靈活性......這裏也可以用NodeJS來實現它:https://stackoverflow.com/questions/45334339 /如何到流行到根對話與 - BOT框架 – Krumelur