所以,
我进行了广泛的搜索,阅读了我能找到的关于该主题的所有内容,但我仍然没有做到这一点。我已设法向用户发送主动消息、回复团队中的主题等,但我无法在团队频道中发送主动消息(创建新帖子)。
是否有可用的示例(我找不到任何示例)?NodeJS 的 MS Docs 似乎显示了向团队中的每个用户发送消息的示例,但没有显示通道本身。
我探索了源代码,并channelData硬编码到nullinside botFrameworkAdapter.js,这只会增加混乱。
所以,基本代码是:
const builder = require('botbuilder');
const adapter = new builder.BotFrameworkAdapter({
appId: 'XXX',
appPassword: 'YYY'
});
const conversation = {
channelData: {
//I have all this (saved from event when bot joined the Team)
},
...
// WHAT THIS OBJECT NEEDS TO BE TO SEND A SIMPLE "HELLO" TO A CHANNEL?
// I have all the d
};
adapter.createConversation(conversation, async (turnContext) => {
turnContext.sendActivity('HELLO'); //This may or …Run Code Online (Sandbox Code Playgroud) 我似乎停留在通过Amazon SQS将压缩消息从PHP发送到NodeJS上。
在PHP方面,我有:
$SQS->sendMessage(Array(
'QueueUrl' => $queueUrl,
'MessageBody' => 'article',
'MessageAttributes' => Array(
'json' => Array(
'BinaryValue' => bzcompress(json_encode(Array('type'=>'article','data'=>$vijest))),
'DataType' => 'Binary'
)
)
));
Run Code Online (Sandbox Code Playgroud)
注意1:我也尝试将压缩数据直接放入消息中,但是该库给我一个错误,其中包含一些无效的字节数据
在节点方面,我有:
body = decodeBzip(message.MessageAttributes.json.BinaryValue);
Run Code Online (Sandbox Code Playgroud)
消息来自sqs.receiveMessage()调用,该部分有效,因为它适用于原始(未压缩的消息)
我得到的是TypeError:格式不正确
我也尝试使用:
PHP-节点
gzcompress()-zlib.inflateraw()
gzdeflate()-zlib.inflate()
gzencode()-zlib.gunzip()
这些对中的每对都给了我相同错误的版本(本质上,输入数据是错误的)
考虑到所有这些,我开始怀疑消息传输中存在错误
我究竟做错了什么?
编辑1:似乎错误发生在传输中,因为php中的bin2hex()和Node中的.toString('hex')返回完全不同的值。似乎PHP中的Amazon SQS API使用base64传输BinaryAttribute,但是Node无法对其进行解码。我设法通过关闭Amazon aws配置文件中的自动转换,然后在node中手动解码base64来部分解码它,但是它仍然无法解码。
编辑2:通过在php端使用base64_encode(),并将base64作为messageBody发送(不使用MessageAttributes),我设法完成了同样的事情。在节点侧,我使用了新的Buffer(messageBody,'base64'),然后在其上使用了解码Bzip。一切正常,但是我仍然想知道为什么MessageAttribute无法正常工作。当前的base64增加了开销,我喜欢按预期使用服务,而不是通过变通办法。