Botframework 如何在没有TeamsActivityHandler的情况下使用Node JS响应Bot framework v4中的任务模块或任务/获取?
在团队中,我需要使用NodeJS和botbuilder4.8用网页填充任务模块。一旦Bot从带有“msteams”的AdaptiveCard检测到调用:{“type”:“task/fetch”}:Botframework 如何在没有TeamsActivityHandler的情况下使用Node JS响应Bot framework v4中的任务模块或任务/获取?,botframework,bots,microsoft-teams,Botframework,Bots,Microsoft Teams,在团队中,我需要使用NodeJS和botbuilder4.8用网页填充任务模块。一旦Bot从带有“msteams”的AdaptiveCard检测到调用:{“type”:“task/fetch”}: if(turnContext.activity.type==ActivityTypes.Invoke){… 我不知道如何响应HTTP 200状态,内容类型和正文如下: { "task": { "type": "continue", "value": {
if(turnContext.activity.type==ActivityTypes.Invoke){…
我不知道如何响应HTTP 200状态,内容类型和正文如下:
{
"task": {
"type": "continue",
"value": {
"title": "My Title",
"height": 200,
"width": 500,
"url": "[myURL]",
"fallbackUrl": "[myURL]"
}
}
}
记录于:
我不能从TeamsActivityHandler扩展
我甚至试过:
const botbuilder_core_1 = require("botbuilder-core");
return botbuilder_core_1.ActivityHandler.createInvokeResponse(myBody);
它抛出[Adapter onTurnError]:错误:未设置附件的ContentType
是否有MessageFactory类或类似类可以简单地发送响应
目前的样品对我来说不够
Bot.js
if (turnContext.activity.type === ActivityTypes.Invoke) {
// Handler for Adaptive Cards actions
if (turnContext.activity.value != undefined && turnContext.activity.value.id != undefined) {
switch (turnContext.activity.value.id) {
case "openOfficesMaps":
await this.findOfficesAdressesDialog.displayMaps(turnContext);
break;
...
class FindOfficesAdressesDialog extends SalesHubComponentDialog {
async displayMaps(turnContext) {
// If it were an adaptive card I would do this:
return await turnContext.sendActivity({
attachments: [CardFactory.adaptiveCard(officesMapTaskModule)]
});
officesMapTaskModule.json
{
"task": {
"type": "continue",
"value": {
"title": "Offices Map",
"height": 500,
"width": "medium",
"url": "[myURL]/$24web/officesMapTaskModule.html",
"fallbackUrl": "[myURL]/%24web/officesMapTaskModule.html"
}
}
}
class FindOfficesAdressesDialog extends SalesHubComponentDialog {
async displayMaps(turnContext) {
// This gives content type is missing
const botbuilder_core_1 = require("botbuilder-core");
return botbuilder_core_1.ActivityHandler.createInvokeResponse(body);
谢谢是的,您需要
TeamsaActivityHandler
。为什么不能像示例那样扩展它?请包含您的ActivityHandler的完整代码。该示例使整个Bot声明为:类TeamsTaskModuleBot扩展TeamsaActivityHandler{仅仅因为一个对话框需要显示一个弹出窗口,就让整个bot从某个通道的处理程序扩展不是一个好的设计。在我的例子中,类findofficesadressdialog已经从另一个类扩展了,我是否需要解决nodejs中的多重继承来解决它?提前感谢@mdrichardsonAh。我明白了。TeamsActivityHandler
只是团队的附加处理程序,但它仍然支持所有正常的ActivityHandler
s而不覆盖任何。请参阅。您可以使用它,并且仍然对所有通道使用其中的正常ActivityHandler
方法。我甚至使用TeamsActivityHandler扩展了我的Bot类,然后我得到了一个无响应的消息然后,我尝试了另一种方法,比如创建一个从TeamsActivityHandler扩展而来的单独类,当Bot接收到ActivityTypes.Invoke消息时,该类由Bot实例化。仅当我这样做时才在该类中进行。onInvokeActivity(turnContext);makes handleTeamsTaskModuleFetch()被调用,但也没有得到好的结果。我仍然不知道如何让团队收到一个简单的AdaptiveCard/URL以显示在这些弹出窗口中。在没有看到您的代码的情况下,我不确定如何最好地帮助您。从一个团队示例(#50-60)开始重新开始从这里开始;它在所有通道上都有效,您只需要在非onTeams*
方法中做一些事情。您需要TeamsActivityHandler
,并且您只需要一个实现ActivityHandler
的类。是的,您需要TeamsActivityHandler
。为什么不能像示例那样扩展它呢?请包括:为ActivityHandler编写完整代码。该示例使整个Bot声明为:类TeamsTaskModuleBot扩展TeamsActivityHandler{仅仅因为一个对话框需要显示一个弹出窗口,就让整个bot从某个通道的处理程序扩展不是一个好的设计。在我的例子中,类findofficesadressdialog已经从另一个类扩展了,我是否需要解决nodejs中的多重继承来解决它?提前感谢@mdrichardsonAh。我明白了。TeamsActivityHandler
只是团队的附加处理程序,但它仍然支持所有正常的ActivityHandler
s而不覆盖任何。请参阅。您可以使用它,并且仍然对所有通道使用其中的正常ActivityHandler
方法。我甚至使用TeamsActivityHandler扩展了我的Bot类,然后我得到了一个无响应的消息然后,我尝试了另一种方法,比如创建一个从TeamsActivityHandler扩展而来的单独类,当Bot接收到ActivityTypes.Invoke消息时,该类由Bot实例化。仅当我这样做时才在该类中进行。onInvokeActivity(turnContext);makes handleTeamsTaskModuleFetch()被调用,但也没有得到好的结果。我仍然不知道如何让团队收到一个简单的AdaptiveCard/URL以显示在这些弹出窗口中。在没有看到您的代码的情况下,我不确定如何最好地帮助您。从一个团队示例(#50-60)开始重新开始从这里开始;它可以在所有通道上工作,您只需要在非onTeams*
方法中执行一些操作。您需要TeamsActivityHandler
,并且只需要一个实现ActivityHandler
的类。