我正在尝试在“团队”频道中发送文件(日历ics文件)。我正在使用下面的代码在网络聊天频道中运行良好:
const reminder = fs.readFileSync(`temp/reminder.ics`);
const base64reminder = Buffer.from(reminder).toString('base64');
await dc.context.sendActivity({'text':'Click here to set up a reminder on your calendar', 'attachments': [{
name: 'Leader X Activities',
contentType: 'text/plain',
contentUrl: `data:text/calendar;base64,${ base64reminder }`}]
});
我同时使用了text / plain和text / calendar,那里的类型没什么不同。但是团队抛出了未知附件类型错误。这是我在App Insights中捕获的内容。
{"error":"Unknown attachment type","callStack":"Error: Unknown attachment type\n at new RestError (D:\\home\\site\\wwwroot\\node_modules\\@azure\\ms-rest-js\\dist\\msRest.node.js:1399:28)\n at D:\\home\\site\\wwwroot\\node_modules\\@azure\\ms-rest-js\\dist\\msRest.node.js:2495:37\n at <anonymous>\n at process._tickDomainCallback (internal/process/next_tick.js:228:7)","botName":"itInnovationBot"}
我已经尝试查看文档here,但是我完全同意同意的规定,然后再发送文件,这毫无意义。它也使用与我不同的语法,可能是因为它扩展了TeamsActivityHandler。我在扩展ComponentDialog的瀑布对话框中进行此操作,因此甚至不确定是否可以利用该类。
似乎我需要征求某种形式的同意才能发送文件,但是我找不到有关如何执行此操作的任何文档。为了将这个ics文件附加到团队中,我该怎么做?
我对直接通过Graph API执行此操作有些兴趣,但是我相信我们对此有一些内部公司障碍,这就是为什么我尝试使用ics文件附件进行初始实现的原因。此外,那只能解决ics文件,我知道我们将来需要让该bot发送其他文件类型。
编辑:我尝试了其他一些可能取得一些进展的事情,但是仍然无法正常工作。以下内容摆脱了未知的附件错误,但已替换为空内容错误:
await dc.context.sendActivity({'text':'Click here to set up a reminder on your calendar', 'attachments': [{
name: 'Leader X Activities',
contentType: 'application/vnd.microsoft.teams.card.file.info',
contentUrl: `data:text/calendar;base64,${ base64reminder }`}]
});
添加内容对象我只会收到“ ServiceError / Unknown”错误,这对于进一步进行故障排除不是很有帮助。我在内容对象中尝试了各种不同的信息,但结果都相同。
await dc.context.sendActivity({'text':'Click here to set up a reminder on your calendar', 'attachments': [{
name: 'Leader X Activities',
contentType: 'application/vnd.microsoft.teams.card.file.info',
contentUrl: `data:text/calendar;base64,${ base64reminder }`,
content: {
uniqueId: '12345whatever'
contentType: 'text/plain'
}}]
});
编辑2:进一步的更新是,我尝试设置一个同意卡,并假设我随后可以查找“调用”活动,但是同意按钮似乎不起作用。实际上产生任何活动。这是代码:
await dc.context.sendActivity({'attachments': [{
content: {
description: 'Here is the file I want to send you',
fileSizeInBytes: fileSizeInBytes,
accetpContext: fileContext,
declineContext: fileContext
},
contentType: 'application/vnd.microsoft.teams.card.file.consent',
name: 'reminder.ics'}]
})
编辑3:,我没有从桌面应用收到任何消息或活动指示,但是当我尝试从移动应用中单击同意按钮时,它却给我一个“ BOTNAME并没有支持文件”错误消息,即使我在Teams应用清单中也将其设置为支持文件。看来我没有参加任何活动,因为该按钮的按下被阻止了。不知道这是否是因为我没有使用TeamsActivityHandler(如果需要的话,那么我将需要知道如何将其合并到使用ComponentDialog的瀑布对话框中)。