如何在 botframework 中接收来自嵌入式 webview 的请求并关闭消息扩展 window?
How to receive request from embedded webview in botframework and close the messaging extensions window?
我有一个具有消息扩展功能的机器人。我遵循了一个例子 here。但是我没有使用卡片视图,而是使用嵌入式 Web 视图来显示我的自定义 UI(这是一个托管在 S3 中的 React 应用程序)
这是我用来打开消息扩展预览的代码:
handleTeamsMessagingExtensionFetchTask(context, action) {
const url = process.env.POPUP_VIEW_URL;
return {
task: {
type: 'continue',
value: {
url: url,
fallbackUrl: url,
width: 680,
height: 400,
title: 'Feedback & praise',
},
},
};
}
弹出窗口将包含此 UI:
我试图找到有关当用户单击“提交请求”按钮时机器人如何从 UI 接收请求的 example/documentation,但目前找不到它。我看了这个 this,但它使用了自适应卡片示例。
我想知道是否有嵌入式 webview 文档中的示例?我还想在用户单击按钮时进行 API 调用,但仍然对如何在 API 调用 return 成功后关闭预览 window 感到困惑。
您需要在点击按钮时使用 submitTask
microsoftTeams.tasks.submitTask(JSON);
正如上面@Rajesh 的回答。这基本上就是我所做的
- 将
@microsoft/teams-js
添加到我的 React 应用程序
- 来自我的包含按钮的组件。由于我不需要将任何信息传递回 bot/teams,所以我只调用不带参数的函数。
import * as microsoftTeams from "@microsoft/teams-js";
...
export const myComponent = () => {
const submitRequest = () => {
// make API request
if (success) {
microsoftTeams.initialize(); // This is a must
microsoftTeams.tasks.submitTask();
}
}
return (
<>
...
<button onClick={submitRequest} type="button">Submit request</button>
</>
);
}
我有一个具有消息扩展功能的机器人。我遵循了一个例子 here。但是我没有使用卡片视图,而是使用嵌入式 Web 视图来显示我的自定义 UI(这是一个托管在 S3 中的 React 应用程序)
这是我用来打开消息扩展预览的代码:
handleTeamsMessagingExtensionFetchTask(context, action) {
const url = process.env.POPUP_VIEW_URL;
return {
task: {
type: 'continue',
value: {
url: url,
fallbackUrl: url,
width: 680,
height: 400,
title: 'Feedback & praise',
},
},
};
}
弹出窗口将包含此 UI:
我试图找到有关当用户单击“提交请求”按钮时机器人如何从 UI 接收请求的 example/documentation,但目前找不到它。我看了这个 this,但它使用了自适应卡片示例。
我想知道是否有嵌入式 webview 文档中的示例?我还想在用户单击按钮时进行 API 调用,但仍然对如何在 API 调用 return 成功后关闭预览 window 感到困惑。
您需要在点击按钮时使用 submitTask
microsoftTeams.tasks.submitTask(JSON);
正如上面@Rajesh 的回答。这基本上就是我所做的
- 将
@microsoft/teams-js
添加到我的 React 应用程序 - 来自我的包含按钮的组件。由于我不需要将任何信息传递回 bot/teams,所以我只调用不带参数的函数。
import * as microsoftTeams from "@microsoft/teams-js";
...
export const myComponent = () => {
const submitRequest = () => {
// make API request
if (success) {
microsoftTeams.initialize(); // This is a must
microsoftTeams.tasks.submitTask();
}
}
return (
<>
...
<button onClick={submitRequest} type="button">Submit request</button>
</>
);
}