gpt4 book ai didi

node.js - Skill Bot 机器人框架中的 NodeJS 主动消息传递

转载 作者:行者123 更新时间:2023-12-05 05:41:21 29 4
gpt4 key购买 nike

我正在处理 NodeJS 中的一个要求,我必须从 Skill Bot 调用主动消息。我有一个设置的 Interval 循环,每 8 秒运行一次,我在其中添加了 adapter.ContinueConversation 方法。我最初在消息方法的技能机器人中添加了以下代码,但收到了 401 未经授权的错误。

await context.sendActivity(`Echo (JS) : '${ context.activity.text }'`);
await context.sendActivity('Say "end" or "stop" and I\'ll end the conversation and back to the parent.');
var adapter = context.adapter;
var conversationReference = TurnContext.getConversationReference(context.activity);
var refreshInterval = setInterval(async () => {
try {
await adapter.continueConversation(conversationReference, async turnContext => {
await turnContext.sendActivity('Are you still there?');
});
}
catch (error) {
console.log(error);
}
}, 8000,conversationReference);

在网上做了一些研究后,我添加了额外的参数,如声明身份和 Root Bot 的应用程序 ID,如下所示,但现在我收到错误,adapter.continueConversationAsync 不是函数

var conversationReference = TurnContext.getConversationReference(stepContext.context.activity);
var claimsIdentity= stepContext.context.turnState.get(stepContext.context.adapter.BotIdentityKey);
var oAuthScope= stepContext.context.turnState.get(stepContext.context.adapter.OAuthScopeKey);

await adapter.continueConversationAsync(claimsIdentity, convRef, oAuthScope, async context => {
await context.sendActivity("hello");
})

有人可以帮忙解决这个问题吗?

最佳答案

首先,您收到错误“adapter.continueConversationAsync 不是函数”,因为您的参数错误。根据文档,有两个重载版本的 continueConversation 方法:

function continueConversation(reference: Partial<ConversationReference>, logic: (context: TurnContext) => Promise<void>): Promise<void>

function continueConversation(reference: Partial<ConversationReference>, oAuthScope: string, logic: (context: TurnContext) => Promise<void>): Promise<void>

您的初始实现很好,问题不在于缺少 oAuthScope。我可以想到导致 401 错误的三个可能原因:

  1. 您的机器人适配器的 appID 和 appPassword 可能未正确设置。验证您的 appId 和 appPassword 是否正确。

     const adapter = new BotFrameworkAdapter({
    appId: process.env.MicrosoftAppId,
    appPassword: process.env.MicrosoftAppPassword
    });
  2. 尝试信任对话引用的服务 URL:

     var conversationReference = TurnContext.getConversationReference(stepContext.context.activity);

    await adapter.continueConversationAsync(conversationReference, async context => {
    MicrosoftAppCredentials.trustServiceUrl(conversationReference.serviceUrl);
    await context.sendActivity("hello");
    })

最后,尝试记录您的conversationReference 并验证conversationReference 本身是否正确。尽管由于您是在发送主动消息之前从turncontext获取conversationReference,所以这部分不应该是问题。

关于node.js - Skill Bot 机器人框架中的 NodeJS 主动消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72283403/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com