Итак,
Я искал повсюду, прочитал все, что мог найти в топи c, и мне все еще не удается это сделать. Мне удалось отправить проактивное сообщение пользователю, ответить на команду topi c, et c. но я не могу отправить упреждающее сообщение (создать новое сообщение) в канале команды.
Есть ли доступный пример (я не смог его найти)? MS Docs для NodeJS, кажется, показывает пример передачи сообщений каждому пользователю в команде, но не сам канал.
Я исследовал исходный код, и channelData
жестко закодирован в null
внутри botFrameworkAdapter.js
, что только добавляет путаницы.
Итак, код basi c:
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 may not be needed?
});
Кто-нибудь делал это с Node? Если да, может ли кто-нибудь показать мне рабочий пример (с правильно сконструированным conversation
объектом)?
* РЕДАКТИРОВАТЬ *
Как предложил Хилтон в ответе ниже, я попытался использовать ConnectorClient
напрямую, но он возвращает ресурс недоступен (/v3/conversations
)
Вот код, который я использую (буквально только это, просто пытаюсь отправить демонстрационное сообщение):
const path = require('path');
const { ConnectorClient, MicrosoftAppCredentials } = require('botframework-connector');
const ENV_FILE = path.join(__dirname, '.env');
require('dotenv').config({ path: ENV_FILE });
const serviceUrl = 'https://smba.trafficmanager.net/emea/';
async function sendToChannel() {
MicrosoftAppCredentials.trustServiceUrl(serviceUrl);
var credentials = new MicrosoftAppCredentials(process.env.MicrosoftAppId, process.env.MicrosoftAppPassword);
var client = new ConnectorClient(credentials, { baseUri: serviceUrl });
var conversationResponse = await client.conversations.createConversation({
bot: {
id: process.env.MicrosoftAppId,
name: process.env.BotName
},
isGroup: true,
conversationType: "channel",
id: "19:XXX@thread.tacv2"
});
var acivityResponse = await client.conversations.sendToConversation(conversationResponse.id, {
type: 'message',
from: { id: process.env.MicrosoftAppId },
text: 'This a message from Bot Connector Client (NodeJS)'
});
}
sendToChannel();
Что я делаю не так?