链接任务模块MS团队

时间:2020-05-19 09:30:22

标签: botframework microsoft-teams

我正在尝试链接任务模块,以通过单击按钮来依次显示自定义表单。我遵循了文档,但无法完全确定它是如何完成的。 我正在使用bot框架4.9 SDK 这是我的代码:

任务/提取功能

 protected override async Task<TaskModuleResponse> OnTeamsTaskModuleFetchAsync(ITurnContext<IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
    {

       //*** Returning first custom form****//
        return new TaskModuleResponse
        {
            Task = new TaskModuleContinueResponse
            {
                Type = "continue",
                Value = await this.GetTaskInfo(turnContext,JsonConvert.DeserializeObject<TaskFetchJsonSerializer>(taskModuleRequest.Data.ToString()).data)
            },
        };
    }

任务/提交:

protected override async Task<TaskModuleResponse> OnTeamsTaskModuleSubmitAsync(ITurnContext<IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
    {              
           //***sending second custom form as continue response***//
        return new TaskModuleResponse
        {
            Task = new TaskModuleContinueResponse
            {
                Type = "continue",
                Value = await this.GetTaskInfo(turnContext, TaskModuleIds.PRFPAddressForm)
            },
        }};

我能够呈现第一种形式,但是单击按钮后,第二种形式不会呈现。

1 个答案:

答案 0 :(得分:0)

这是在任务模块中调用任务模块的示例代码

要从任务模块调用的HTML页面

<html>
    <body>
    <button type="button" id=""taskModuleChaining" onClick="OpenAnotherTaskModule()">Open Another Task Module</button>
    </body>
    <script>
    microsoftTeams.initialize();

    function OpenAnotherTaskModule(){
    let taskInfo={
    action:"newTaskModule"
    }
    taskInfo.height="medium";
    taskInfo.width="medium";
    microsoftTeams.tasks.submitTask(taskInfo);
return true;
    }
    </script>
    </html>

C#中的邮政编码:

 {
    //serialize the task module submit data in a model to get the action name
    string action =JsonConvert.DeserializeObject<Models.TaskModuleActionData<string>>(activityValue).Data;

                if (action=="newTaskModule")
                {
 var response = new TaskModuleResponse
            {
                Task = new TaskModuleContinueResponse
                {
                    Value = new TaskModuleTaskInfo()
                    {
                        url= "yourngrok.io",
                        Height = 200,
                        Width = 400,
                        Title = "Task Module",
                    },
                },
            };
return response;

    }
            }

您的机器人将收到一条调用消息。您可以在模型中解析任务模块发送给机器人的数据,然后创建任务模块响应并将其返回。