Хобрук: Ваш путь к мастерству в программировании

прямое сообщение slack api rtm

Я использую пакет узлов: slack-client для взаимодействия с api в slack. Теперь, с использованием или без использования Slack-client, как мне отправить прямое сообщение от моего бота пользователю, которого я хочу указать? Вот что произошло с простым сокетным подключением:

var WebSocket = require('ws')
,ws2 = new WebSocket(myURL); //from rtm start
 ws2.on('open', function() {
    ws2.send({
    "id": 333,
    "type": "message",
    "channel": "@user1", //User I want to send to
    "text": "HEY!!!!"
    });
});
ws2.on('message', function(message) {
    console.log('received: %s', message);
}); 

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

13.07.2015

  • Я получил письмо от службы поддержки Slack, которое должно решить эту проблему. Добавлю ответ сегодня вечером, если он сработает 14.07.2015

Ответы:


1

Хорошо, поэтому при вызове rtm.start через веб-api вы получите список DM, который будет открыт для различных пользователей, иначе вы можете легко открыть im с im.open. Я использую slack-client пакета node, как упоминалось в моем вопросе, поэтому вы можете сделать это:

     //name of user your bot wants to send a msg to.
     var userTest = slack.getUserByName('user1');
     slack.openDM(userTest.id, function(res)
     {
         TestMsg(res.channel.id, 'some other msg');//test function I'm using
     });

Далее идет функция TestMsg:

function TestMsg(userChannelId, msg)
{
  request.post({url:     'https://slack.com/api/chat.postMessage',
                form:    { token: "xxxx-yourbot-token",channel: userChannelId,text: msg ,username: "yourBotNamehere", as_user: false}
              }, function(error, response, body){
                console.log(response.body);
               });
}

Я пока не мог заставить его работать, используя метод отправки веб-сокетов, но я полагаю, что api postMessage пока подойдет, поскольку вы можете публиковать богато отформатированные сообщения с помощью postMessage. Надеюсь, это кому-то поможет

16.07.2015
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..