我想和一个用户开始对话,但他已经和机器人聊天了。
我正在进行B获取 conversationId
当用户安装机器人应用为 在此提及
我在这里怎么抓 reference
和 serviceUrl
借用 processActivity
事件
那我就用 continueConversation
+ reference
const {
BotFrameworkAdapter,
} = require('botbuilder');
const adapter = new BotFrameworkAdapter({
appId: "xxxx",
appPassword: "xxxxy"
})
module.exports = async function(context, req) {
console.log(adapter);
try {
adapter.processActivity(req, context.res, async (turnContext) => {
const reference = turnContext.activity.conversation.id
const serviceUrl = turnContext.activity.serviceUrl
await adapter.continueConversation(reference, async (turnContext) => {
try {
await turnContext.sendActivity("this is proacive message");
} catch (e) {
console.log(e)
}
});
});
} catch (e) {
console.log(e)
}
return;
};
我得到了这个错误
Error: BotFrameworkAdapter.sendActivity(): missing serviceUrl.
我已经检查了 turnContext.activity
值。我得到。 {"type":"event","name":"continueConversation"}"
其他所有的值都是未定义的(serviceUrl也是)。
我注意到 turnContext.activity
里面 adapter.processActivity
殊途同归 adapter.continueConversation
而拥有 serviceUrl
和 conversationId
我如何编辑这个代码示例,以便能够向用户发送主动消息?
如果你是在BotFrameworkAdapter.continueConversation()中使用ConversationReference,那么const引用需要是ConversationReference而不仅仅是Id。
ConversationReference可以通过使用以下方法来检索。
const reference = TurnContext.getConversationReference(turnContext.activity);