Microsoft Bot Framework отправляет сообщение без разговора пользователя с ботом - PullRequest
2 голосов
/ 01 октября 2019

Мне нужно заставить бота отправлять сообщения каждые десять минут, используя Javascript. Я использую Microsoft Bot Framework, это код входа:

const restify = require('restify');
const botbuilder = require('botbuilder');

var adapter = new botbuilder.BotFrameworkAdapter({
    appId: process.env.MicrosoftAppId,
    appPassword: process.env.MicrosoftAppPassword
});

let server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
    console.log(`\n${server.name} listening to ${server.url}`);
    console.log(`\nGet Bot Framework Emulator: https://aka.ms/botframework-emulator`);
});

server.post('/api/messages', (req, res) => {
    adapter.processActivity(req, res, async (turnContext) => {
        if (turnContext.activity.type === 'message') {            
            const text = turnContext.activity.text;
            await turnContext.sendActivity(`You just said: ${ text }`);
        }
    });
});

По сути, это ответ "Вы только что сказали: x" на все, что сказал человек, разговаривающий с ботом.

Мне нужно, чтобы бот был в группе в Skype и отправлял сообщение каждые десять минут.

Однако в моем примере сервер ожидает POST для / api / messages, а затем использует адаптер дляобработать этот запрос и запустить метод "sendActivity" из turnContext, который исходит из метода processActivity.

Как я могу просто отправить сообщение с фиксированным интервалом и игнорировать все сообщения / упоминания.

1 Ответ

2 голосов
/ 01 октября 2019

То, что вы хотите сделать, называется превентивный обмен сообщениями . Вы можете взглянуть на этот документ и образец, на который он ссылается , чтобы лучше понять, как это сделать.

Если вы хотите, чтобы ваши проактивные сообщения инициировалисьтаймер, тогда вы можете запустить таймер в потоке вашего бота, хотя обычно рекомендуется, чтобы таймер работал внешне.

Чтобы отключить обмен сообщениями для вашего бота, просто выберите эту опцию в конфигурации канала . Я не уверен, как вы получите идентификатор разговора, если отключите обмен сообщениями.

enter image description here

Если вы все еще хотите, чтобы ваш бот получал сообщенияно просто не хотите отвечать на них, просто отредактируйте ту часть кода вашего бота, которая отвечает условию turnContext.activity.type === 'message'.

Пожалуйста, имейте в виду, что возможности ботов Skype могут становиться все более ограниченными. В вашей конфигурации канала Skype должно появиться официальное сообщение:

С 31 октября 2019 года канал Skype больше не будет принимать новые регистрации ботов. Текущие боты Skype будут работать без перебоев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...