我正在使用Microsoft Bot Framework FormFlow来让用户填写表单.完成后,Dialog结束并执行为ResumeWith参数指定的方法(在本例中quoteComplete):
var quoteForm = new FormDialog<Quote>(new Quote(),
quoteFormBuilder.BuildForm, FormOptions.PromptInStart);
context.Call<Quote>(quoteForm, quoteComplete);
Run Code Online (Sandbox Code Playgroud)
在quoteComplete我希望机器人告诉用户它正在获得一个引用,它可能需要几秒钟.然后完成执行引用的异步调用,并且在它返回时我希望机器人显示另一个带有引用值的消息:
await context.PostAsync("I will now calculate your quote. I won't be long...");
context.Wait(MessageReceived);
//Simulate getting the quote
Task.Delay(5000).ContinueWith(t =>
{
context.PostAsync("Your quote is £133.54");
});
Run Code Online (Sandbox Code Playgroud)
我还尝试在文档中提供以下建议,通过将其放入以下内容来发送多个回复Delay().ContinueWith:
var message = context.MakeMessage();
message.Text = "Your quote is for £133.54";
var connector = new ConnectorClient();
connector.Messages.SendMessage(message);
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个Access Denied错误.
尝试通过以下方式实例化客户端
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message))
{
var client = scope.Resolve<IConnectorClient>();
client.Messages.SendMessage(message);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2134 次 |
| 最近记录: |