我有一个在botframework v3上运行的机器人。我建立了一个直接渠道,以便我可以解析来自Alexa和Google Home的任务。这些请求通过在Amazon Cloud / Google Cloud和botservice之间架桥的Web服务进行。 在api / alexa上收到Alexa呼叫,在api / Google上收到Google Assistant呼叫。我在本地Web服务之间运行此命令,因此我正在通过ngrok使用host-headers = rewrite路由请求。 Alexa可以正常工作,但Google Assistant不能。对话以某种方式无法开始。参见下面的代码
从Alexa控制器启动directLine(有效):
var client = _directLineMaker.GetClient(ConfigAndConstants.DirectLineSecret);
var conversation = await client.Conversations.StartConversationAsync();
session.Attributes[ConfigAndConstants.DictKeyWatermark] = null;
从Google控制器启动directLine(无效):
var client = _directLineMaker.GetClient(ConfigAndConstants.DirectLineSecret);
/// client is defined
var conversation = await client.Conversations.StartConversationAsync();
/// The line below is never reached
var session = sessionId;
在两种情况下,_directlineMaker.GetClient()都仅返回
return new DirectLineClient(directLineSecret);
行为是一致的; Google助手从来没有用过,Alexa总是可以用。我看不出我做了什么不同的事情,对于导致这种行为的原因我一无所知。
什么可能导致startConversationAsync不返回任何内容?
编辑:
在我调用
时,可以启动Google Assistant的对话var conversation = client.Conversations.StartConversation();
所以我很高兴。仍然困惑为什么异步版本会挂起。
答案 0 :(得分:0)
这与直线无关,但是与我有关的所有事情都造成了僵局。在Task.Run(()=> {}).Result中运行此代码;解决了一切。