Meteor 通过RocketChat中的DDP发送LiveChat消息时出现问题
我正在尝试使用DDP实时API来启动LiveChat对话,但我面临一些问题 我正在按照文档执行所有步骤。在第一个API结果中,您可以看到它sausMeteor 通过RocketChat中的DDP发送LiveChat消息时出现问题,meteor,ddp,rocket.chat,Meteor,Ddp,Rocket.chat,我正在尝试使用DDP实时API来启动LiveChat对话,但我面临一些问题 我正在按照文档执行所有步骤。在第一个API结果中,您可以看到它sausnumAgents:2和online:true。然而,当我试图向同一部门发送消息时,它会说:“对不起,没有在线代理” 有办法找出问题吗 livechat的结果:getInitialData livechat的结果:registerGuest 登录结果 sendMessageLivechat的结果 这些是我要发送到sendMessageLiveChat
numAgents:2
和online:true
。然而,当我试图向同一部门发送消息时,它会说:“对不起,没有在线代理”
有办法找出问题吗
livechat的结果:getInitialData
livechat的结果:registerGuest
登录结果
sendMessageLivechat的结果
这些是我要发送到sendMessageLiveChat
的参数
"_id" : "j65Cp5peeLJLYhWQi"
"rid" : "a_random_string"
"msg": "Hello"
"token" : "J8IpnpB1yN1AYtO0e0EzLhuaRhe0zaZkjHBAamsehSO"
有人能帮我吗
我就是这样叫registerGuest的
ddpClient.call("livechat:registerGuest",[{"token":authToken,"name":"test1","email":"test2@gmail.com","department":department._id},25],function(err, info){
});
我在这里传递的令牌是管理员的authToken
ddpClient对象是使用DDP npm包获得的 我通过以下方法解决了这个问题
同时将bot设置为livechat代理和管理器(我在某个地方读过这个提示,可能是胡说八道)
在Admin->Omnichannel->routing中,我设置了“即使没有代理在线也接受”(因为我的bot从未在线,但在发送dmessage时它正在应答)+“将bot代理分配给新对话”
我给自己设置了一个livechat经理+livechat代理的角色,但我留在了另一个部门,这样我就可以接管
rocket chat live api文档已经过时了,只是因为一篇随机的论坛帖子,流媒体聊天室的消息才起作用。通常,registerGuest也使用非常小的参数,即随机的、自生成的令牌+名称
这是我的完整设置代码
async subscribeToLiveRoom(message){
var _self = this
// let initial = await this.api
// .call("livechat:getInitialData",[token])
// register
const token = this.randomString()
var guestUser = await this.api
.call(
'livechat:registerGuest',
[{
token: token,
name: _self.$auth.user.name
}]
)
.catch(console.error)
console.log('guest', guestUser.visitor.token)
this.setActiveGuest(guestUser)
var roomId = this.randomString()
this.setActiveRoom(roomId)
let msg = await this.api
.call(
'sendMessageLivechat',
[{
_id: _self.randomString(),
rid: roomId,
msg: message,
token: guestUser.visitor.token
}])
.catch(console.error)
try {
let liveStream = await this.$subscribe("stream-livechat-room",[
roomId,
{
"useCollection": true,
"args":[
{
"visitorToken": guestUser.visitor.token
}
]
}
])
this.msgLive = await this.find('stream-livechat-room')
} catch (e) {
console.log(e)
}
//
try {
var roomStream = await this.$subscribe("stream-room-messages",[
roomId,
{
"useCollection": true,
"args":[
{
"visitorToken": guestUser.visitor.token
}
]
}
])
console.log('roomstream')
var update = this.find('stream-room-messages')
} catch (e) {
console.log('an error occured', e)
}
console.log( this.msg)
},
async sendToLiveRoom(message, rId){
var _self = this
// let initial = await this.api
// .call("livechat:getInitialData",[token])
// register
let msg = await this.api
.call(
'sendMessageLivechat',
[{
_id: _self.randomString(),
rid: rId,
msg: message,
token: _self.guest.visitor.token
}])
.catch(console.error)
},
顺便说一句,由于没有很好的文档记录,您可以通过订阅流式聊天室消息
在livechat room中获得聊天室消息,而通过订阅流式聊天室
可以更改聊天室状态(如切换到另一个代理)
同时将bot设置为livechat代理和管理器(我在某个地方读过这个提示,可能是胡说八道)
在Admin->Omnichannel->routing中,我设置了“即使没有代理在线也接受”(因为我的bot从未在线,但在发送dmessage时它正在应答)+“将bot代理分配给新对话”
我给自己设置了一个livechat经理+livechat代理的角色,但我留在了另一个部门,这样我就可以接管
rocket chat live api文档已经过时了,只是因为一篇随机的论坛帖子,流媒体聊天室的消息才起作用。通常,registerGuest也使用非常小的参数,即随机的、自生成的令牌+名称
这是我的完整设置代码
async subscribeToLiveRoom(message){
var _self = this
// let initial = await this.api
// .call("livechat:getInitialData",[token])
// register
const token = this.randomString()
var guestUser = await this.api
.call(
'livechat:registerGuest',
[{
token: token,
name: _self.$auth.user.name
}]
)
.catch(console.error)
console.log('guest', guestUser.visitor.token)
this.setActiveGuest(guestUser)
var roomId = this.randomString()
this.setActiveRoom(roomId)
let msg = await this.api
.call(
'sendMessageLivechat',
[{
_id: _self.randomString(),
rid: roomId,
msg: message,
token: guestUser.visitor.token
}])
.catch(console.error)
try {
let liveStream = await this.$subscribe("stream-livechat-room",[
roomId,
{
"useCollection": true,
"args":[
{
"visitorToken": guestUser.visitor.token
}
]
}
])
this.msgLive = await this.find('stream-livechat-room')
} catch (e) {
console.log(e)
}
//
try {
var roomStream = await this.$subscribe("stream-room-messages",[
roomId,
{
"useCollection": true,
"args":[
{
"visitorToken": guestUser.visitor.token
}
]
}
])
console.log('roomstream')
var update = this.find('stream-room-messages')
} catch (e) {
console.log('an error occured', e)
}
console.log( this.msg)
},
async sendToLiveRoom(message, rId){
var _self = this
// let initial = await this.api
// .call("livechat:getInitialData",[token])
// register
let msg = await this.api
.call(
'sendMessageLivechat',
[{
_id: _self.randomString(),
rid: rId,
msg: message,
token: _self.guest.visitor.token
}])
.catch(console.error)
},
顺便说一句,由于没有很好的文档记录,您可以通过订阅流媒体聊天室消息
在livechat rooms中获得聊天室消息,同时更改聊天室状态(如切换到其他代理)通过订阅stream livechat room
您能展示一下您是如何调用livechat:registerGuest
?@Styx-我更新了我的问题,将该部分包括在内。您能展示一下您是如何调用livechat:registerGuest
的吗?@Styx-我更新了我的问题,将该部分包括在内。
"_id" : "j65Cp5peeLJLYhWQi"
"rid" : "a_random_string"
"msg": "Hello"
"token" : "J8IpnpB1yN1AYtO0e0EzLhuaRhe0zaZkjHBAamsehSO"
ddpClient.call("livechat:registerGuest",[{"token":authToken,"name":"test1","email":"test2@gmail.com","department":department._id},25],function(err, info){
});
async subscribeToLiveRoom(message){
var _self = this
// let initial = await this.api
// .call("livechat:getInitialData",[token])
// register
const token = this.randomString()
var guestUser = await this.api
.call(
'livechat:registerGuest',
[{
token: token,
name: _self.$auth.user.name
}]
)
.catch(console.error)
console.log('guest', guestUser.visitor.token)
this.setActiveGuest(guestUser)
var roomId = this.randomString()
this.setActiveRoom(roomId)
let msg = await this.api
.call(
'sendMessageLivechat',
[{
_id: _self.randomString(),
rid: roomId,
msg: message,
token: guestUser.visitor.token
}])
.catch(console.error)
try {
let liveStream = await this.$subscribe("stream-livechat-room",[
roomId,
{
"useCollection": true,
"args":[
{
"visitorToken": guestUser.visitor.token
}
]
}
])
this.msgLive = await this.find('stream-livechat-room')
} catch (e) {
console.log(e)
}
//
try {
var roomStream = await this.$subscribe("stream-room-messages",[
roomId,
{
"useCollection": true,
"args":[
{
"visitorToken": guestUser.visitor.token
}
]
}
])
console.log('roomstream')
var update = this.find('stream-room-messages')
} catch (e) {
console.log('an error occured', e)
}
console.log( this.msg)
},
async sendToLiveRoom(message, rId){
var _self = this
// let initial = await this.api
// .call("livechat:getInitialData",[token])
// register
let msg = await this.api
.call(
'sendMessageLivechat',
[{
_id: _self.randomString(),
rid: rId,
msg: message,
token: _self.guest.visitor.token
}])
.catch(console.error)
},