我有一个 Slack 机器人,它需要返回一条消息,其中包括 Slack 用户列表和一个按钮来向每个用户发送消息。
我希望用户的参与体验保持一致。如果用户通过桌面 Slack 应用程序与机器人交互,那么我希望用户留在应用程序中(不要被带到网络客户端——他们可能没有经过身份验证)。
就像是:
Results:
User A - click link to view User A's profile in Slack
[Message] - click button to open direct message with user A
User B - click link to view User B's profile in Slack
[Message] - click button to open direct message with user B
Run Code Online (Sandbox Code Playgroud)
我被困在几个问题上:
如何链接到用户的个人资料,因为我不知道他们使用的是 Slack 应用程序还是 Slack 网络(因此如何在显示slack://user?team=&id=..
或domain.slack.com/team/{id}
接近之间做出决定?这是假设我使用title_link
或author_link
属性。
如何创建一个消息按钮来向用户打开直接消息(甚至更好地打开它并预填充消息)?我目前一直在玩链接动作,但没有任何运气。
我想我可以通过让机器人发送 DM 然后 @mention 原始用户来解决它。从用户体验的角度来看不是很好。
更新
感谢 Adil 和 …
在我的iPad上使用iOS Facebook Messenger应用程序,我正在构建一个机器人,它将向用户发送媒体播放器链接.
用户点击链接后,它会在Facebook Messenger App内打开内联链接(至少这是iPad的行为).在媒体播放结束时,我想自动关闭内联浏览器窗口并将用户返回到当前对话.
当我尝试这样做window.close()
并没有关闭在iPad Facebook Messenger中打开的内联浏览器窗口时.有没有其他方法可以关闭Facebook浏览器窗口?
我希望创建一个机器人,并且遇到了Microsoft Bot Framework(使用LUIS或可以使用API.AI提供的C#SDK)和Howdy.ai Botkit(中间件支持LUIS和API.AI).
有人可以帮助我比较这两者吗?
我在我的机器人中寻找以下内容 -
有没有可以在一个而不是在另一个中的东西?
我有一个使用botkit运行的机器人.我想发出一条警告信息,当你直接与机器人交谈时,编辑的消息会被忽略,所以我正在做:
controller.on('message_changed', function(bot, message) {
bot.reply(message, ":warning: Your edit was ignored.");
});
Run Code Online (Sandbox Code Playgroud)
机器人在一个有许多人的房间里,这样那些人就可以私下"访问"机器人.
问题:当有人在房间内编辑消息时,机器人会发出警告.避免这种情况的最佳方法是什么?
我希望避免将房间ID硬编码到机器人不应该回复的房间,因为我们可能在其他房间有机器人.
我遇到了一个无聊的问题.从几天开始,我总是invalid_oauth
从松弛的API中获取......我正在使用Botkit框架,node.js服务器这是我的调试:
info: ** Starting webserver on port 3000
info: ** Serving webhook endpoints for Slash commands and outgoing webhooks at: http://MY_HOST:3000/slack/receive
info: ** Serving login URL: http://MY_HOST:3000/login
info: ** Serving oauth return endpoint: http://MY_HOST:3000/oauth
info: ** API CALL: https://slack.com/api/rtm.start
debug: rtm.start { no_unreads: true,
simple_latest: true,
token: 'xoxb-81934967667-UOJKkxYnIf0xZJ9cJspwoAOC' }
debug: Got response null {"ok":false,"error":"invalid_auth"}
Error connecting bot to Slack: invalid_auth
我正在推出应用程序:
clientId=xxx.xxx clientSecret=xxx port=3000 node bot.js
我的自定义松弛应用程序配置了botkit调试控制台返回的oauth端点,localtunnel转发到我的本地机器,在应用程序中配置了一个机器人.
有任何想法吗 ?我确信我离解决方案不远......
非常感谢任何帮助.
我目前正在尝试使用 Botkit 框架创建一个 Messenger Bot!
由于我在不同的计算机上工作,我想使用 docker 来防止任何本地配置问题。
不幸的是,我是 botkit 和 docker 的新手。
bot
??? README.md
??? docker
? ??? botkit
? ? ??? Dockerfile
? ??? node
? ??? Dockerfile
??? docker-compose.yml
??? node_modules
??? package.json
4 directories, 5 files
Run Code Online (Sandbox Code Playgroud)
version: "2"
services:
node:
build: ./docker/node
volumes_from:
- "app"
botkit:
build: ./docker/botkit
links:
- "node"
volumes_from:
- "app"
app:
image: "node:8"
working_dir: /home/nook_bot
environment:
- NODE_ENV=production
volumes:
- .:/home/nook_bot
- /home/nook_bot/node_modules
command: "npm init --yes && npm …
Run Code Online (Sandbox Code Playgroud) 我试图创建一个发送私信给随机松弛用户一个机器人。我试图完成的第一步是console.logging用户列表。
这是我到目前为止的内容:
controller.hears('marco', 'direct_message', function(bot, message) {
bot.api.users.list({user: message.user}, function(err, list){
bot.reply(message, "polo");
console.log(bot.api.users.list);
})
});
Run Code Online (Sandbox Code Playgroud)
当我直接向机器人发送消息时marco
,它会回复polo
并[Function]
记录下来。我如何可以登录一些真实的数据?我试过bot.api.users.list.members
,但它作为记录undefined
。谢谢。
如何部署在Aws Lambda中使用Botkit构建的slack bot.如果是斜杠命令,我们可以使用下面的代码响应事件.
exports.handler = function(event, context) {
//Echo back the text the user typed in
context.succeed('You sent: ' + event.text);
};
Run Code Online (Sandbox Code Playgroud)
但不知道如何为Bots做同样的事情.使用Botkit(Howdy)的Bots的示例代码是
Controller.hears(['help'], 'direct_message,direct_mention,mention', (bot, message) => {
bot.reply(message, {
text: `You can ask me things like:
"Search Contact"
"Search Account"`
});
});
Run Code Online (Sandbox Code Playgroud) 这是关于使用 Botkit 开发 Slack 机器人。
Slack 允许您就地更新消息 - 例如,如果您从用户那里获取输入(无论是通过文本还是按钮),您可以根据该信息更新消息。(有关此内容的更多信息,请参见“替换原始消息”: https: //api.slack.com/docs/message-buttons)。
Botkit 通过replyInteractive() 支持此功能,如下所示: https: //github.com/howdyai/botkit/blob/master/readme-slack.md#message-buttons。
然而,Botkit 的一个关键功能是对对话线程的支持。虽然这些允许您提出问题并允许按钮作为答案,但我没有看到在对话中进行交互式回复(即更新消息)的方法。
知道如何做到这一点吗?当前不支持它的结论性答案也会有所帮助。谢谢你!
我在本地安装了botkit,并且工作正常.现在,我想将机器人与外部的restful api连接起来,例如:
人:你有多少客户连接?Bot:机器人在我的服务的其余api内部执行查询然后,回答Bot:连接了21个客户端.
有什么建议吗?
botkit ×10
slack ×5
bots ×3
javascript ×3
slack-api ×3
aws-lambda ×1
botframework ×1
docker ×1
ios ×1
ipad ×1
node.js ×1
npm ×1
rest ×1