我对 Bot Framework 很陌生,正在探索解决方案。
\n\n我正在尝试在Android 应用程序(以及之后的 python Flask 应用程序)中使用 microsoft bot 框架作为 API 调用。为此,我想弄清楚如何向我的机器人发送消息并通过邮递员接收答案
\n\n现在我的机器人已经启动并在团队和网络聊天中运行。我正在使用机器人服务来利用微软机器人框架。我的应用程序在 Heroku 上运行,机器人托管在 Azure 上。
\n\n\n\n我已经检查了 bot 服务上的直接线路通道,但这正在返回一个用于网络聊天的 iframe,我想通过 python、java 等以编程方式发送我的消息作为 api 调用\n
我还检查了有关 v3 机器人框架的 stackoverflow 问题,并尝试了以下操作:\n如何将我的 python 机器人连接到 microsoft 机器人连接器
\n\n从 Postman 向 Microsoft Bot 发送消息
\n\nhttps://pypi.org/project/botframework-connector/
\n\n1\xc2\xb0 我在第二个 stackoverflow url 之后访问了我的不记名令牌:
\n\n{\n "token_type": "Bearer",\n "expires_in": 3600,\n "ext_expires_in": 3600,\n "access_token": "eyJ0eXAiOiJKV1QiL***********************************ObNWg"\n}\nRun Code Online (Sandbox Code Playgroud)\n\n2\xc2\xb0 然后向邮递员提供带有此网址的不记名令牌https://directline.botframework.com/v3/directline/conversations/
\n\n和这个 json 原始主体:
\n\n …如果您使用带有大量按钮的英雄卡,则按钮操作将在 Teams 上水平滚动。因此,我们正在考虑使用自适应卡片,因为我们希望将按钮显示为垂直排列的消息。我想更改HostConfig的ActionsConfig的actionsOrientation的值以适应Adaptive Card,但我不知道如何操作。使用Bot框架SDK for python,您可以使用创建AdaptiveCard附件CardFactory.adaptive_card(card_data: dict),但我不知道如何设置HostConfig。
我正在起诉 MS Bot Framework,并且在从一个瀑布对话框路由到另一个瀑布对话框时,收到此错误“提示对话框需要提示选项(参数“选项”)”。请帮我看看这可能是什么原因造成的。从父级到子级的调用对话框:
return await stepContext.BeginDialogAsync(DialogType.ChildDialog.ToString(), conversationData, cancellationToken);
Run Code Online (Sandbox Code Playgroud)
在 ChildDialog 内:
public ChildDialog(
IServiceProvider serviceProvider)
: base(nameof(ChildDialog))
{
_
_conversationDataAccessor = serviceProvider.GetService<UserState>().CreateProperty<ConversationData>(nameof(ConversationData));
_userState = serviceProvider.GetService<UserState>().CreateProperty<User>(nameof(User));
var Test = new WaterfallStep[]
{
StepOne,
StepTwo
};
_D1 = serviceProvider.GetService<D1>();
_D2 = serviceProvider.GetService<D2>();
AddDialog(new WaterfallDialog(nameof(Test), Test));
AddDialog(new TextPrompt(DialogIds.ChildDialog));
AddDialog(D1);
AddDialog(D2);
}
Run Code Online (Sandbox Code Playgroud) 我最近开始在 Node js 中创建一个 Azure 机器人。我想在机器人响应之一中添加一个超链接,并在用户单击它后发送主动响应。就像是:
Please click this link to complete the payment。
并且该链接应该是一个将重定向到端点的超链接。
我试图找到一种方法来实现它,但到目前为止,我还没有能够实现。我看过以下链接:
有人可以建议我实现这一目标的方法吗?
我正在尝试查找MS Bot框架是否提供任何资源/准则来为基于Node SDK的机器人编写单元测试(特别是,我使用直线通道)。
如果没有,如何使用Mocha之类的工具编写测试用例来测试各种对话框。
我正在使用restify,如下所示:
/**-----------------------------------------------------------------
* Setup Chat-Bot
-----------------------------------------------------------------*/
// Create chat connector for communicating with the Bot Framework Service
var connector = new builder.ChatConnector({
appId: process.env.MICROSOFT_APP_ID || config.appId,
appPassword: process.env.MICROSOFT_APP_PASSWORD || config.appPassword
});
// Initialize bot
var bot = universalBot(connector);
/**-----------------------------------------------------------------
* Setup Server
-----------------------------------------------------------------*/
var server = restify.createServer();
server.listen(process.env.port || 8080, function () {
console.log('%s listening to %s', server.name, server.url);
});
server.pre(restify.pre.sanitizePath());
server.use(restify.queryParser());
/**---------------------------------------------------------------
* Routes
----------------------------------------------------------------*/
server.get('/', function (req, res) {
res.send("Hello from Chatbot …Run Code Online (Sandbox Code Playgroud) 我正在使用MS bot框架,我无法找到表单流中的枚举选项的自定义消息.我尝试过提示属性,但它不起作用.
我想要的是:bot将为用户显示如下选项:
1)是的,我想成为DayNinja!
2)不,我不想解锁流量来实现我的目标.
3)稍后,我将从基础开始
现在,我得到的是:"是","否","后来"
任何帮助将不胜感激谢谢!

我在集成LiveAgent(客户支持/票务Web应用程序)和MS BotFramework时遇到问题.
Azure中的botframework工作正常并准备与它集成.
https://<ms_azure_link>/api/messages)api/messages叫什么DirectLine API 3.0?实际上DirectLine API将返回如下内容:
{
"conversationId": "3M3TeaDtc3uArxXwlna7AG",
"token": "<My token>",
"expires_in": 1800,
"streamUrl": "wss://directline.botframework.com/v3/directline/conversations/3M3TeaDtc3uArxXwlna7AG/stream?watermark=-&t=ubeJVCXqb9I.dAA.MwBNADMAVABlAGEARAB0AGMAMwB1AEEAcgB4AFgAdwBsAG4AYQA3AEEARwA.7UpMr6Tm0wE.9RmCM_XyjII.CQbU7viSec2P7CtznrijQwou0A8N0GynOvnsUmNT04o",
"referenceGrammarId": "669c7246-bc5c-f25f-aae7-0ad7f39e25b4"
}
如您所见,使用DirectLine连接后,需要继续使用WebSocket.
那么如何使用LiveAgent连接到这个WebSocket呢?有关您的信息,LiveAgent仅支持HTTP GET/POST到自定义URL.
如果我们不使用DirectLine API,我将使用MS Azure Bot Endpoint.现在问题变成:应该将什么传递给此端点,以便LiveAgent可以像往常一样授权自己并使用Bot?有什么例子吗? DirectLine API示例似乎没有谈论这个.
非常感谢你提前.我知道这个问题可能没有很好地说明,但希望你能理解.
如果您有任何疑问,请告诉我,我很高兴澄清一下.
再次感谢你的帮助.
我在Node.js上使用Microsoft Bot Framework.我有一个如下所示的配置文件.
{
"server": {
"port": 3978
},
"dialogs": {
"default": {
"text": "This is some sample text.",
"actions": [
{
"title": "Button 1",
"value": "Action 1"
},
{
"title": "Button 2",
"value": "Action 2"
}
]
},
"hello": {
"text": "hello",
"matches": "^hello$"
},
"asdf": {
"text": "asdf",
"matches": "^asdf$"
},
"goodbye": {
"text": "goodbye",
"matches": "^goodbye$"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想使用for循环来读取对话框并创建它们,以便它们响应text值并具有值的触发器操作matches.
例如,机器人响应hello输入hello,asdf输入asdf和goodbye输入goodbye. …
我已经在C#中使用Microsoft框架v4 SDK编写了一个机器人。该机器人已部署在Azure中,并连接到网络聊天,直线和Facebook Messenger渠道。该机器人适合所有人。
用户可以订阅以主动接收更新。为此,我使用一个存储的ConversationReference,然后将其用于发送主动消息。再次,所有这一切都正常,除非机器人wepApp重新启动,这会导致:-
Exception caught : Microsoft.Bot.Schema.ErrorResponseException: Operation returned an invalid status code 'Unauthorized' for the facebook channel.
Run Code Online (Sandbox Code Playgroud)
如果我从facebook messenger向机器人发送了另一条消息,那么即使对于较旧的存储的ConversationReferences,主动消息也可以再次开始工作。
最初,我是按照示例使用MemoryStorage的,但是我将其更改为将Azure Blob存储用于sessionState和userState。这没有区别。好像它必须在内存中存储一个Facebook身份验证令牌,因此,如果应用程序重新启动,令牌将丢失,直到用户从Messenger发送了另一条消息。
有什么办法可以解决此问题,因为如果无法处理机器人webApp重新启动,它会使已订阅的主动更新毫无意义吗?
非常感谢
facebook proactive unauthorized facebook-messenger botframework
我正在使用Microsoft机器人框架来创建机器人并将其集成到团队中。该漫游器的部分要求包括每天一次主动向用户发送消息。据我了解,我只能向在机器人之后添加到team / groupChat或直接向机器人发送消息的用户发送消息。我的问题是-我可以以某种方式绕过此限制吗?我的一个朋友叫我去graphAPI的一项新功能,如新测试版的一部分- https://docs.microsoft.com/en-us/graph/api/user-add-teamsappinstallation?view=graph-rest -beta&tabs = http。
对我来说,它似乎与解决方案无关,因为我没有在响应中返回任何数据,因此,如果没有对话参考对象,我仍然无法向用户发送消息。
目前,我的解决方案是简单地在添加频道时在频道中广播一条消息,要求用户通过发送消息来“注册”它。还有其他建议吗?
botframework ×10
node.js ×4
c# ×2
asp.net ×1
azure ×1
azure-language-understanding ×1
chatbot ×1
exception ×1
facebook ×1
formflow ×1
json ×1
postman ×1
proactive ×1
python ×1
unauthorized ×1