DirectLine 客户端上的 startConversationAsync() 未完成
startConversationAsync() on DirectLine client doesn't finish
我在 botframework v3 上有一个机器人 运行ning。我创建了一个直线频道,以便我可以解析来自 Alexa 和 Google Home 的请求。这些请求通过在 Amazon cloud/Google 云和机器人服务之间架起桥梁的 Web 服务进行。
api/alexa 收到 Alexa 电话,api/Google 收到 Google 助理电话。我 运行 这在本地 webservice 之间,因此我通过带有 host-headers=rewrite 的 ngrok 路由请求。 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() 只是 returns
return new DirectLineClient(directLineSecret);
行为一致; Google Google 助理从未工作过,Alexa 一直在工作。我没有看到我的做法有什么不同,而且我对导致这种行为的原因一无所知。
什么会导致 startConversationAsync 没有 return 任何东西?
编辑:
启动 Google 助手的对话在我调用
时有效
var conversation = client.Conversations.StartConversation();
所以我很高兴。还是不解为什么异步版本挂了
这与直线无关,但一切都与我造成了僵局。 运行 此代码在 Task.Run( () => { } ).Result 中;解决了一切。
我在 botframework v3 上有一个机器人 运行ning。我创建了一个直线频道,以便我可以解析来自 Alexa 和 Google Home 的请求。这些请求通过在 Amazon cloud/Google 云和机器人服务之间架起桥梁的 Web 服务进行。 api/alexa 收到 Alexa 电话,api/Google 收到 Google 助理电话。我 运行 这在本地 webservice 之间,因此我通过带有 host-headers=rewrite 的 ngrok 路由请求。 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() 只是 returns
return new DirectLineClient(directLineSecret);
行为一致; Google Google 助理从未工作过,Alexa 一直在工作。我没有看到我的做法有什么不同,而且我对导致这种行为的原因一无所知。
什么会导致 startConversationAsync 没有 return 任何东西?
编辑:
启动 Google 助手的对话在我调用
时有效var conversation = client.Conversations.StartConversation();
所以我很高兴。还是不解为什么异步版本挂了
这与直线无关,但一切都与我造成了僵局。 运行 此代码在 Task.Run( () => { } ).Result 中;解决了一切。