通过POST将参数发送到Botframework(和其他通道)

通过POST将参数发送到Botframework(和其他通道),botframework,Botframework,我正在从事机器人项目,机器人将在不同的渠道上工作(web/messenger,可能还有其他渠道) 我实际上是在主动消息中,我们想向用户发送动态消息,例如“你从XXX时间就不跟我说话” 因此,我在bot中创建了一个新的路由,用于发送带有会话引用的消息,目前在emulator/messenger上运行良好,但我们尝试向该请求添加参数,但没有找到任何方法在bot中获取参数 server.post('/api/notify/:conversationID', async (req, res) =>

我正在从事机器人项目,机器人将在不同的渠道上工作(web/messenger,可能还有其他渠道)

我实际上是在主动消息中,我们想向用户发送动态消息,例如“你从XXX时间就不跟我说话”

因此,我在bot中创建了一个新的路由,用于发送带有会话引用的消息,目前在emulator/messenger上运行良好,但我们尝试向该请求添加参数,但没有找到任何方法在bot中获取参数

server.post('/api/notify/:conversationID', async (req, res) => {

console.log(req)

if (req.params.conversationID){
    console.log(req.params.conversationID)
}


for (let conversationReference of Object.values(conversationReferences)) {

   if (typeof conversationReferences[req.params.conversationID] !== "undefined"){
        await adapter.continueConversation(conversationReferences[req.params.conversationID], async turnContext => {
            await turnContext.sendActivity(req.params.message);


        });
   }else {
    await adapter.continueConversation(conversationReference, async turnContext => {
        await turnContext.sendActivity(req.params.message);
    });
   }



}

res.setHeader('Content-Type', 'text/html');
res.writeHead(200);
res.write('<html><body><h1>Test send.</h1></body></html>');
res.end();
});
在index.js中

您现在可以获得邮政路线呼叫的正文!
:-)

您可以通过
channelData
属性传递空活动中的任何参数来实现这一点。由于活动在
文本
属性中包含一个空字符串,因此在传递给bot时将不会显示该活动

在本例中,主动消息从浏览器启动

server.get('/api/notify/:userId',异步(req,res)=>{
const{userId}=req.params;
for(对象值的常量conversationReference(conversationReferences)){
等待适配器。continueConversation(conversationReference,async turnContext=>{
var reply={type:ActivityTypes.Message};
reply.channelData={userId};
reply.text='';
等待turnContext.sendActivity(回复);
});
}
res.setHeader('Content-Type','text/html');
书面记录(200);
res.write('已发送主动消息');
res.end();
});
通过
channelData
发送
userId
的主动消息

userId
由bot通过
活动接收。channelData

测试网络聊天也会在
活动中显示
用户ID
。channelData


希望有帮助

您好,谢谢您的回复!:-)这样,我就面临着其他问题。我正在尝试将param中消息的内容发送到。但是如果param的长度是可扩展的,api将返回我“resourcentfound”,并使用类似param的路由示例:I call/api/notify/userId/blabla。。。(超过50/70个字符),返回“/api/notify/userId/bla不存在”大小或参数有限制吗?这就是我尝试使用post-param实现的原因。为了避免这种情况,在服务器端传入一个包含数据的JSON对象并提取它。在URL中传递长消息不是最佳做法。
server.use(restify.plugins.bodyParser())