标签: botframework

带有Facebook Messenger按钮的Microsoft Bot Framework消息

我正在使用C#Microsoft Bot Framework开发机器人,我想将带有操作按钮的消息发送到Facebook Messenger.我已成功创建机器人,部署它并可以通过Messenger与它进行通信,现在我正在尝试改进机器人响应的外观.我已经能够通过将卡信息放入Message.Attachements来创建单卡和轮播,但我还想包括操作按钮.Messenger平台文档在其发送API参考中描述了按钮和"通用"模板,但对于我的生活,我无法弄清楚如何强制Bot连接器向Messenger发送按钮.如果我可以将Send API json放入Message.ChannelData属性但没有运气,那就太棒了.有没有人设法让Messenger显示Bot框架中的按钮?

c# facebook-messenger botframework

5
推荐指数
1
解决办法
5524
查看次数

Facebook Messenger的Microsoft Bot Framework附件

带有Facebook Messenger按钮的Microsoft Bot Framework消息

我的问题与上面提到的问题有关.我正在使用不使用bot builder sdk的node.js编写机器人.我手动返回ms bot连接器服务的兼容响应.这对于文本响应工作正常,但我希望返回更复杂的响应,例如可以使用messenger返回的按钮/轮播.根据我上面提到的问题,我猜测了格式并添加了以下内容:

response.attachments = [ { "Title": "Choose One: ", "Actions": [{ "Title": "Postback!", "Message": "Postback from button" }, { "Title": "Postback2!", "Message": "Postback2 from button" }] } ];
Run Code Online (Sandbox Code Playgroud)

顶级标题似乎什么都不做,但操作正确呈现为回发类型按钮(它们将消息作为回发内容发送).使用messenger,您还可以选择返回基于URL的按钮和图像URL.

据我所知,使用节点机器人构建器sdk返回附件没有文档.如果有,我只是用sdk编写机器人以获得响应格式.

所以我的问题是,有没有人知道如何正确地将回发和基于url的按钮返回到bot连接器服务,包括附带的图像,有或没有机器人构建器sdk?

2016年5月5日更新

所以我找到了下面的链接,你可以看到附件属性的定义:

http://docs.botframework.com/sdkreference/nodejs/interfaces/_botbuilder_d_.imessage.html

如果您遵循IAttachment规范,它会让我想知道上面的代码是如何/为何起作用的?作为对该格式的测试,我在下面写道:

    var att = {};
    att.content = "I am content";
    att.contentType = "text/plain";
    att.contentUrl = "http://www.google.com";
    att.fallbackText = "I am fallback text";
    att.text  = "I am text";
    att.thumbnailUrl = "https://pbs.twimg.com/profile_images/638751551457103872/KN-NzuRl.png";
    att.title  ="I am title";
    att.titleLink = "http://yahoo.com";
Run Code Online (Sandbox Code Playgroud)

现在处于松弛状态,我得到了一个相当不错的输出: 在此输入图像描述

但是在messenger中我收到"Service …

node.js facebook-messenger botframework

5
推荐指数
1
解决办法
1247
查看次数

Bot框架 - 登录卡,如何获得验证结果

使用Microsoft Bot Framework V3我开始使用登录卡.

我做了一个简单的剪切和粘贴从示例代码页到我的代码,让我们说它工作(编译):https: //docs.botframework.com/en-us/csharp/builder/sdkreference/attachments.html

所期望的是类似于oauth过程的行为,因此被重定向到,做它自己的东西并返回包括所有信息的auth结果.

我意识到它只是打开一个新的网页到我提供的链接,这就是...

没有其他代码建立其他...

到目前为止它似乎没用,因为我可以根据这种行为简单地提供正常消息的链接,也没有与机器人的通信.

我错过了什么吗?

bots botframework

5
推荐指数
2
解决办法
7794
查看次数

Chrome中的Open messenger chatbot webview扩展程序

我正在尝试访问我的webview扩展程序中的相机,当我单独打开它作为网站时,它在Google Chrome上运行得非常好.我使用Microsoft Bot Framework制作了我的机器人,当我在Messenger上尝试机器人时,似乎信使弹出了自己的某种浏览器并且不允许我的相机.这有什么解决方法吗?

感谢您的帮助

bots chatbot botframework facebook-chatbot

5
推荐指数
0
解决办法
513
查看次数

Node.js的多选提示

我想在Node.js中创建一个选项提示,允许用户进行多项选择,就像在FormFlow for .NET中一样(参见Simple Sandwich Bot的 toppings提示).

可能已经有一些我可以调整的示例代码吗?使用按钮而不是列表也可以实现吗?

node.js botframework

5
推荐指数
1
解决办法
876
查看次数

如何使用Bot框架弹出根对话框?

我正在基于bot框架为我的bot使用.Net后端。在我的一个对话框中,我为用户提供了返回根对话框的选项-或至少是我正在尝试执行的操作,但没有成功。这是我已经尝试过的:

  • 通话context.Reset()-我得知我可能不会在对话框中使用它;它导致崩溃
  • Conversation.SendAsync((IMessageActivity)context.Activity, () => new RootDialog()) -似乎什么也没做

理想情况下,我只想回到堆栈的第一位,而不必对RootDialog类型进行硬编码。

c# botframework

5
推荐指数
1
解决办法
1164
查看次数

如何让我的机器人将消息发布到Microsoft Teams频道?

我有一个与docs quickstart中演示的机器人相同的机器人。无论用户说什么(现在),它都会重复执行。

它当前在本地运行,并通过ngrok公开。我已经在Microsoft Bot Framework中注册了该机器人。

我已经在Microsoft Bot Framework中配置了Microsoft Teams频道,并且已经将我的机器人加载到了Teams中。我的机器人可以接收来自 Teams用户的消息。

目前,该机器人只是将收到的所有内容重复发送给用户,但我要执行的操作是发布到Microsoft Teams频道。我希望它发布到Teams频道- 而不是用户 -无需用户首先提示。因此,例如,在给定特定条件(例如,由某些事件(例如一天中的时间,提取请求等)触发)的情况下,它将在通道中发布消息。

我已经阅读了有关发送主动消息的文档,并且为了将消息发送到团队通道,我收集了该机器人需要知道用户的“地址”。此信息存储在session.message.address对象中,并从当前对话中获取该信息。但是,就我而言,我没有“当前保留”功能,因为我不想只回应用户,所以我想主动发布在频道中。

那么,如何为团队频道永久设置必要的凭据/地址/会话数据?

我调查过的事情:

  • Webhooks。我已经在Teams频道中配置了一个Webhook,并且可以使用轻松地(使用webhook网址)向其发送消息curl。因此,我可以向团队频道发送一条简单的消息,其中仅包含一个网址(无需身份验证),但是我不确定如何将该网址发送到我的机器人中。

  • 我们如何在Microsoft Bot Framework中为不同的用户维护不同的会话?我不确定这里的答案是否能回答我的问题。我的问题是,机器人正在发起“对话”,而不是Teams用户,因此我需要能够自己设置会话数据,以便机器人知道要去哪里。

App.js:

require('dotenv').config();
var restify = require('restify');
var builder = require('botbuilder');

// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
   console.log('%s listening to %s', server.name, server.url); 
});

// Create chat connector for communicating with the Bot Framework …
Run Code Online (Sandbox Code Playgroud)

node.js botframework microsoft-teams

5
推荐指数
2
解决办法
4390
查看次数

bot框架按用户地址发送主动消息

我正在使用Microsoft Bot Framework,Webchat频道,NodeJS

还使用Bot-Trees来管理我的对话.

如何主动向用户发送消息?我在我的数据库中保存了用户地址,其中包括用户ID,机器人ID,会话ID等.

我试过这个解决方案,发送我最后保存的用户地址,请求进行得很顺利,没有任何错误,但这些消息并未到达客户端(网络聊天).

有什么建议?

谢谢

主动消息路由,bot-trees项目:

  var connector = new builder.ChatConnector({
  appId: client.id,
  appPassword: client.password,
  });

  var bot = new builder.UniversalBot(connector);

  app.post(`/proactiveTest`, (req, res, next) => {
if (!req.query.addressId ||!req.query.userId || !req.query.convId || !req.query.botId){
  res.send("Missing params")
}

let channelId = 'webchat';
let id = req.query.addressId;
var user = {id : req.query.userId, name : req.query.userName};
let conversation = {id : req.query.convId};
let botDetails = {id : req.query.botId , name : req.query.botName};
let serviceUrl = …
Run Code Online (Sandbox Code Playgroud)

node.js botframework

5
推荐指数
1
解决办法
651
查看次数

Microsoft.Bot.Builder - 偶发错误 - "操作返回无效状态代码'未经授权'"

我正在使用Microsoft.Bot.Builder v3.15.2.2,QnA Maker(预览模式,又名'old')和QnAMakerDialog(来自Microsoft.Bot.Builder.CognitiveServices v1.1.7)开发聊天机器人.我正在使用Direct API作为频道,并使用BotFramework-WebChat将我的聊天框嵌入到网页中.我还实现了一个自定义机器人数据存储来保持机器人的状态.

有时(我无法建立模式),在与bot的对话中,我收到以下错误:

Microsoft.Bot.Connector.ErrorResponseException: Operation returned an invalid status code 
'Unauthorized' at Microsoft.Bot.Connector.Conversations.
<ReplyToActivityWithHttpMessagesAsync>d__9.MoveNext() --- End of stack trace from previous 
location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.
ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.
HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Bot.Connector.
ConversationsExtensions.<ReplyToActivityAsync>d__9.MoveNext() --- End of stack trace from 
previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.
TaskAwaiter`1.GetResult() at UCB.ChatBot.Bot.Controllers.MessagesController.<Post>d__3.
MoveNext() in [...]Bot\Controllers\MessagesController.cs:line 39
Run Code Online (Sandbox Code Playgroud)

出现此错误后,机器人不断回复'抱歉!无法匹配任何选项.' 或者,在对话开始之前,不断给你回答问题.按Ctrl + …

botframework azure-qna-maker

5
推荐指数
1
解决办法
917
查看次数

将信息从技能存储/发送到Microsoft虚拟助手

我使用的是Microsoft Bot框架(4.x),我们已经设置了虚拟助手以及一些技能。当前,我们正在尝试让用户以某种特定技能打断当前对话,然后跳到新对话。我们想要添加功能,然后使我们能够跳回到用户放弃上一个现有技能的地方。

我的问题是,是否有可能将信息从技能传递给在整个对话过程中始终存在的虚拟助手?该信息将是字符串列表或类似性质的东西

c# chatbot botframework azure-bot-service

5
推荐指数
1
解决办法
124
查看次数