PHP Profi

Slack. Отправка простого сообщения.

php package slack

Недавно я писал пост о реинкарнации популярного PHP-пакета для Slack, в котором рассказывалось о форке популярного пакета и возобновлении поддержки оного. Однако, в статье нет ни слова о том как его использовать. Кроме того, на русском языке нет ни слова об использовании этого пакета. Да и об отправке сообщений в Slack в целом практически нет информации. Я решил исправить эту ситуацию и рассказать о том как можно быстро реализовать на PHP простейшую отправку сообщений в Slack.

Отправка Slack-сообщения на PHP

Сначала давайте взглянем в целом на реализацию отправки. Что бы мы могли отправить сообщение из PHP, нам необходимо сделать 3 небольших и простых пункта:

  • Создать incoming webhook в админке Slack'а, скопировать url
  • Установить php-пакет с помощью Composer
  • Немного простого кода для создания и отправки сообщения
    • Создать клиент, передав url хука
    • Отправить сообщение

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

Создание incoming webhook

Отправка сообщения изначально осуществляется на сервера Slack'а. А потом эти сервера доставляют сообщение до конечных пользователей. Для серверов Slack'а (да и для конечного пользователя), отправленное вами сообщение на эти сервера, является входящим. Поэтому оно называется incoming, несмотря на то, что для вас в момент отправки оно является исходящим. Тут главное не запутаться. Смотрите на это с позиции конечного пользователя, тогда всё становится на свои места.

Чтобы создать incoming webhook перейдите по ссылке https://my.slack.com/services/new/incoming-webhook. Вас перенаправит в ваш workspace — последний, в админку которого вы заходили. Если у вас нет доступа к этому функционалу, попросите администратора вашего Slack'а создать incoming webhook и прислать вам url на него.

Если у вас несколько workspace'ов, перейти на нужный можно использовав меню в правом верхнем углу:

Далее вам предложат выбрать канал, в который будут доставляться сообщения:

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

После этого будет создан новый webhook. Вас перебросит на страницу с его настройками, с раскрытой информацией как его использовать, как формировать сообщение и простым примером отправки через команду curl.

Тут вы можете сразу скопировать Webhook URL, закрыть админку и перейти к установке пакета и коду.

Если же вы хотите добавить немного "красивости", то сверните эти инструкции или пролистайте вниз до настроек хука:

Тут вы можете изменить

  • канал по умолчанию,
  • перегенерировать url (если он, например, был скомпрометирован, как этот),
  • задать "имя пользователя" - точнее, вашего приложения, которое присылает сообщения,
  • выбрать иконку или лого,
  • ... ну и посмотреть как в итоге будет выглядеть приходящее сообщение.

Слов много, но делается за две минуты. Всё, админка Slack'а нам больше не нужна, можно её закрыть. Не забудьте скопировать hook_url.

Установка пакета

Установить пакет можно через наш любимый Composer:

composer require alek13/slack

Собственно, и всё! Пакет установлен и готов к использованию.

Отправка сообщения на PHP

Для начала нам нужен экземпляр клиента. Для его создания минимально, что требуется — это тот самый url на incoming webhook, который мы скопировали при его создании.

// подтяните из вашего конфига
$hookUrl = 'https://hooks.slack.com/services/Txxxxxxxx/Bxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx';

$client = new Maknz\Slack\Client($hookUrl);

Или вы можете изменить дефолтный канал, имя пользователя, иконку и некоторые другие настройки:

// подтяните из вашего конфига
$hookUrl  = 'https://hooks.slack.com/services/Txxxxxxxx/Bxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx';
$settings = [
	'username' => 'Php Profi Bot',
	'channel' => '#general',
];

$client = new Maknz\Slack\Client($hookUrl, $settings);

Подробнее о настройках, можно посмотреть тут.

И теперь просто отправляем сообщение:

$client->send('Hello world!');

Вот и всё!

Подробнее посмотреть об отправке можно тут.

Надеюсь, эта статья упростит вам жизнь при интеграции вашего приложения со Slack'ом. Если что-то осталось не раскрыто или у вас просто возник вопрос, пишите в комментариях или в Slack.

2018-01-24 alek13

Комментарии

авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий