错误:validateAndFixActivity():缺少活动类型 - npm botbuilder-v.4.22.3

问题描述 投票:0回答:1

我们在以下代码片段中获得

Error: validateAndFixActivity(): missing activity type 
,同时尝试使用
contex.updateActivity(message)

根据消息 ID 更新自适应卡详细信息

使用的封装是

    "@azure/identity": "^4.4.0",
    "@microsoft/adaptivecards-tools": "^1.3.4",
    "@microsoft/teamsfx": "^2.3.2",
    "botbuilder": "^4.22.3",
    "restify": "^10.0.0"
try {
await teamsBot.run(context);
const updatedTemplate = structuredClone(onCallNotificationTemplate);
const card2 = CardFactory.adaptiveCard(
AdaptiveCards.declare\<CardDataOnCall\>(updatedTemplate).render(payload)
 );
console.log("Card2-------------\>: ", card2);
const message = MessageFactory.attachment(card2);
message.id = "xxxxxxxxx";
message.type = "message";

await context.updateActivity(message);

catch (error) {
console.error("Error sending on-call adaptive card:", error);
}

我们正在尝试通过调用 API 端点来更新卡详细信息。如果您可以指导我们解决此问题或分享允许我们更新卡详细信息的 Node.js API 端点,那将会非常有帮助。

node.js botframework microsoft-teams restify
1个回答
0
投票

您似乎遇到了 validateAndFixActivity() 函数的问题,该函数在尝试使用 context.updateActivity(message) 更新自适应卡详细信息时缺少活动类型。此错误可能是由于消息对象未正确设置所需的类型属性。

调用 updateActivity 之前请确保 message.type 已正确分配。

此外,如果对话属性尚不存在,请包含该属性,这是更新消息所必需的。

try {
    await teamsBot.run(context);

    // Clone and update the adaptive card template
    const updatedTemplate = structuredClone(onCallNotificationTemplate);
    const card2 = CardFactory.adaptiveCard(
        AdaptiveCards.declare<CardDataOnCall>(updatedTemplate).render(payload)
    );
    console.log("Card2-------------: ", card2);

    // Create the message object
    const message = MessageFactory.attachment(card2);

    // Set the message id and type
    message.id = "xxxxxxxxx";  // Message ID of the existing card you want to update
    message.type = "message";  // Explicitly set the type

    // Ensure you have conversation properties (necessary for update)
    message.conversation = context.activity.conversation;

    // Call updateActivity to update the card
    await context.updateActivity(message);

} catch (error) {
    console.error("Error sending on-call adaptive card:", error);
}

message.id 正确(这应该是您要更新的消息的 ID)。

消息对象中的对话字段应引用当前对话上下文,可以从 context.activity.conversation 获取。

参考示例-https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/bot-conversation/nodejs/bots/teamsConversationBot.js#L282

© www.soinside.com 2019 - 2024. All rights reserved.