14  /  108

Как использовать вложения

Просмотров: 2892 (Статистика ведётся с 06.02.2017)
Александр Суворов
Сложность урока:
4 уровень - сложно, требуется сосредоточится, внимание деталям и точному следованию инструкции.
1
2
3
4
5

Вы собираете объект Вложение и передаете его в метод отправки сообщения в ключ ATTACH (это может быть полная или сокращенная форма вложения):


Полная версия объекта ATTACH

JavaScript:

	ATTACH: {
	   ID: 1,
	   COLOR: "#29619b",
	   BLOCKS: [
		  {...},
		  {...},
	   ]
	}

PHP:

"ATTACH" => Array(
   "ID" => 1,
   "COLOR" => "#29619b",
   "BLOCKS" => Array(
      array(...),
      array(...),
   )
)

Ключи массива:

  • ID - идентификатор блока, который нужен для того, чтобы вложение можно было разместить в любом месте сообщения, а не только в конце.

    Для этого в методе добавления сообщения, в ключе MESSAGE, укажите bb-код [ATTACH=1], тогда при показе сообщения пользователю он будет заменен на вложение. Обратите внимание, указывать bb-код не обязательно, в этом случае вложение будет в конце сообщения.

  • COLOR - отвечает за цветовое выделение вложения. По умолчанию цвет вложения назначается в цвет чата получателя (или если это уведомление в цвет текущего пользователя), Данный ключ можно не задавать, если не требуется.
  • BLOCKS должен содержать блоки разметки, которые мы рассмотрим чуть ниже.

Пример:

JavaScript:

BX24.callMethod('imbot.message.add', {
    DIALOG_ID: 'chat20921',
    MESSAGE: 'Message from bot',
    ATTACH: {
		   ID: 1,
		   COLOR: "#29619b",
		   BLOCKS: [
			{LINK: {
				NAME: "Тикет #12345: новое API для модуля \"Веб-мессенджер\"",
				DESC: "Необходимо реализовать к релизу!",
				LINK: "https://api.bitrix24.com/"
			}},
			{IMAGE: {
				NAME: "Пример реализации",
				LINK: "http://dev.1c-bitrix.ru/bitrix/templates/1c-bitrix-new/images/logo.png",
			}}
		   ]
		}
}, function(result){
    if(result.error())
    {
        console.error(result.error().ex);
    }
    else
    {
        console.log(result.data());
    }
});

PHP:

restCommand('imbot.message.add', Array(
   "DIALOG_ID" => $_REQUEST['data']['PARAMS']['DIALOG_ID'],
   "MESSAGE" => "Message with middle attach [ATTACH=1] from bot",
   "ATTACH" => Array(
      "ID" => 1,
      "COLOR" => "#29619b",
      "BLOCKS" => Array(
         Array("LINK" => Array(
            "NAME" => "Тикет #12345: новое API для модуля \"Веб-мессенджер\"",
            "DESC" => "Необходимо реализовать к релизу!",
            "LINK" => "https://api.bitrix24.com/"
         )),
         Array("IMAGE" => Array(
            "NAME" => "Пример реализации",
            "LINK" => "http://dev.1c-bitrix.ru/bitrix/templates/1c-bitrix-new/images/logo.png",
         ))
      )
   )
), $_REQUEST["auth"]);


Краткая версия объекта ATTACH

Eсли устраивает, что вложение находится внизу сообщения и указывать цвет не требуется, можно использовать краткую версию:

JavaScript:

	ATTACH: [
	  {...},
	  {...},
   ]

PHP:

"ATTACH" => Array(
   array(...),
   array(...),
)

В отличие от полного варианта, на первом уровне сразу указываются блоки разметки, без объявления ключа BLOCKS

Пример:

JavaScript:

BX24.callMethod('imbot.message.add', {
    DIALOG_ID: 'chat20921',
    MESSAGE: 'Message from bot',
    ATTACH: [
		{LINK: {
			NAME: "Тикет #12345: новое API для модуля \"Веб-мессенджер\"",
			DESC: "Необходимо реализовать к релизу!",
			LINK: "https://api.bitrix24.com/"
		}},
		{IMAGE: {
			NAME: "Пример реализации",
			LINK: "http://dev.1c-bitrix.ru/bitrix/templates/1c-bitrix-new/images/logo.png",
		}}
	]
		
}, function(result){
    if(result.error())
    {
        console.error(result.error().ex);
    }
    else
    {
        console.log(result.data());
    }
});

PHP:

restCommand('imbot.message.add', Array(
   "DIALOG_ID" => $_REQUEST['data']['PARAMS']['DIALOG_ID'],
   "MESSAGE" => "Message from bot",
   "ATTACH" => Array(
      Array("LINK" => Array(
         "NAME" => "Тикет #12345: новое API для модуля \"Веб-мессенджер\"",
         "DESC" => "Необходимо реализовать к релизу!",
         "LINK" => "https://api.bitrix24.com/"
      )),
      Array("IMAGE" => Array(
         "NAME" => "Пример реализации",
         "LINK" => "http://dev.1c-bitrix.ru/bitrix/templates/1c-bitrix-new/images/logo.png",
      ))
   )
), $_REQUEST["auth"]);

Примечание: функция restCommand - это метод отправки данных в Битрикс24, данный метод есть в примере ЭхоБота, и представлен здесь в качестве примера. Вы можете использовать свою функцию или javascript-метод BX24.callMethod или bitrix24-php-sdk.

Обратите внимание: из-за сложности структуры, вложения автоматически не добавляются при отправке в XMPP, почту или в виде PUSH-уведомления на телефон.



1
Курсы разработаны в компании «1С-Битрикс»