Comment on page
Функции (API) в калькуляторе
Упрощенные вызовы API из калькулятора
Функции API в калькуляторе работают ТОЛЬКО на тарифе Премиум
ОБОЗНАЧЕНИЯ:
! - Обязательные параметры
Callback можно отправить только ДРУГОМУ клиенту.
СЕБЕ отправить callback НЕЛЬЗЯ!
Описание
Примеры
Пример кода для копирования
Видеоразбор
callback(client_id, callback_message)
Параметры:
! client_id - идентификатор клиента
! callback_message - текст сообщение в колбеке
Колбек - в программировании это функция, предназначенная для отложенного выполнения. То есть это отправка сообщения, которое бот распознает как команду для исполнения. Клиент при этом не в идит данное сообщение, оно видно только в карточке клиента.
Отправим колбек клиенту с client_id=73704021

Блок с условием - отправка колбека клиенту
Скрин карточки клиента:

Полученный клиентом колбек
Далее просто настраиваем реакцию на данный колбек в блоке с условием.
callback('73704021', 'callback TEST123')
Разбор функции callback()
Описание
Примеры
Пример кода для копирования
Видеоразбор
tg_callback(platform_id , callback_message,group_id)
Параметры:
! platform_id - идентификатор клиент Telegram
! callback_message - текст сообщение в колбеке
group_id - идентификатор бота Telegram
tg_callback('73704021', 'callback TEST123')
Разбор функции callback()
tg_callback_url_open(callback_query_id, url)
Параметры:
! callback_query_id - данный id позволяет идентифицировать нажавшего кнопку и продемонстрировать ему Alert-уведомление,
! url - URL-адрес, указывающий бота и параметр (выглядит так: t.me/your_bot?start=XXXX, вместо your_bot - имя бота)
Чтобы в переменную записать текст с переносами строк, укажите значение следующим образом:
text = "Текст первой строки" + "\n" + "Текст второй строки" + "\n" +"Третья строка"
Описание
Примеры
Пример кода
Видеоразбор
message(client_id, text, message_id, timeout)
Параметры:
! client_id - идентификатор клиента
! text - текст сообщения
message_id - идентификатор блока. Если оставить поле text пустым (''), а этот параметр заполнить, то клиенту будет отправлен текст из указанного блока.
Обратите внимание, если в функции message передать параметр message_id , то вычисления в Калькуляторе текущего блока остановятся, а клиент будет перемещен в блок, который вы передали в параметре message_id
timeout - время отправки или задержки. Если нужно отправить сообщение с задержкой, можно указать время:
а) задержка в секундах до 3600 секунд. Если указано большее количество секунд, то сообщение отправится через час, если указано отрицательное число, сообщение отправится мгновенно. Например, timeout = 50.
б) дату отправки в виде дд.мм.гггг чч:мм, например: timeout = ‘03.04.2022 15:00’. Если указать уже прошедшее время, то сообщение отправится мгновенно.
platform_message(platform_id, text, client_type, message_id, timeout,group_id)
Параметры:
! platform_id - идентификатор клиента в мессенджере
! text - текст сообщения
client_type - тип мессенджера, необязательный параметр. Если не указан, то клиента будут искать в том же мессенджере, из которого бот отправляет сообщение. Если указан, то клиент будет найден среди базы данных указанного мессенджера. Используемые типы мессенджеров можно найти тут.
message_id - идентификатор блока. Если указан, то клиент получит сообщение из указанного блока, а не значение из text.
timeout - время отправки или задержка. Аналогичен одноименному параметру функции message()
group_id - идентификатор бота
whatsapp_message(phone, text, message_id)
Параметры:
! phone- номер телефона клиента, на котором зарегистрирован Whatsapp
! text - текст сообщения
message_id - идентификатор блока. Если оставить поле text пустым (''), а этот параметр заполнить, то клиенту будет отправлен текст из указанного блока.
К проекту должен быть подключен Whatsapp-бот
Простой пример отправки сообщения по client_id:

Отправка сообщения по client_id
Разные варианты отправки сообщения по client_id:

Разные варианты отправки сообщения
Пример отправки сообщения через platform_message():

/*Отправка сообщения по client_id*/
message(73704021, 'Текст сообщения для клиента')
/*Отправка сообщения по client_id с задержкой в 30 секунд*/
message(73704021, 'Привет! Спасибо, что написал.','',30)
/*Отправка сообщения из блока 3190 по client_id 03.04.2022 в 15:00*/
message(73704021, '',3190, '03.04.2022 15:00')
/*Отправка сообщения в Whatsapp*/
whatsapp_message('79999999999', 'Текст сообщения для клиента')
Разбор функции message()
Разбор функций platform_message() и whatsapp_message()
Описание
Пример кода
get_client_id_by_platform_id(client_type, platform_id , group)
При выполнении функция вернет client_id, если найдет клиента по заданным условиям, иначе вернет None.
! platform_id - ID клиента в указанном мессенджере.
group - обязательный, если подключено более одного бота для мессенджера.
Если в проекте подключено несколько мессенджеров одного типа, то искать будет по всем подключенным данного типа.
Рекомендуем в этом случае передавать параметр group
Описание
! url - ссылка, по которой делается запрос,
answer_type - необязательный параметр, указание, что из ответа сервера нужно вернуть ('status' - вернет код статуса ответа; 'json' - вернет json из ответа; 'text' - вернет текст ответа сервера, любой иной вариант включая вариант по умолчанию вернет ответ вида '{"status": status_code, "data": data}')
headers - необязательный параметр, в нем передаете заголовки запроса, params - параметры get запроса (могут быть указаны в url),
auth - необязательный параметр, будет полезен при необходимости авторизации в апи. если необязательный параметр не хотите использовать, но нужен идущий за ним, то передайте в этом параметре 0
Описание
! url - ссылка, по которой делается запрос,
answer_type - необязательный параметр, указание, что из ответа сервера нужно вернуть ('status' - вернет код статуса ответа; 'json' - вернет json из ответа; 'text' - вернет текст ответа сервера, любой иной вариант включая вариант по умолчанию вернет ответ вида '{"status": status_code, "data": data}')
headers - необязательный параметр, в нем передаете заголовки запроса, params - параметры get запроса (могут быть указаны в url),
data - необязательный параметр, вариант тела запроса, если на стороне апи не работают с json
json_data - необязательный параметр, также является вариантом тела запроса, использовать нужно какой-то один
Будьте внимательны, некоторые варианты заголовков могут заблокировать отправку запроса с телом определенного вида
auth - необязательный параметр, будет полезен при необходимости авторизации в апи. если необязательный параметр не хотите использовать, но нужен идущий за ним, то передайте в этом параметре 0
Описание
! url - ссылка, по которой делается запрос
answer_type - необязательный параметр, указание, что из ответа сервера нужно вернуть ('status' - вернет код статуса ответа; 'json' - вернет json из ответа; 'text' - вернет текст ответа сервера, любой иной вариант включая вариант по умолчанию вернет ответ вида '{"status": status_code, "data": data}')
headers - необязательный параметр, в нем передаете заголовки запроса, params - параметры get запроса (могут быть указаны в url),
data - необязательный параметр, для этого типа запроса важно знать требуемый апи формат данных
auth - необязательный параметр, будет полезен при необходимости авторизации в апи. если необязательный параметр не хотите использовать, но нужен идущий за ним, то передайте в этом параметре 0
Описание
! url - ссылка, по которой делается запрос
answer_type - необязательный параметр, указание, что из ответа сервера нужно вернуть ('status' - вернет код статуса ответа; 'json' - вернет json из ответа; 'text' - вернет текст ответа сервера, любой иной вариант включая вариант по умолчанию вернет ответ вида '{"status": status_code, "data": data}')
headers - необязательный параметр, в нем передаете заголовки запроса, params - параметры get запроса (могут быть указаны в url),
data - необязательный параметр, для этого типа запроса важно знать требуемый апи формат данных
auth - необязательный параметр, будет полезен при необходимости авторизации в апи. если необязательный параметр не хотите использовать, но нужен идущий за ним, то передайте в этом параметре 0
Описание
! url - ссылка, по которой делается запрос
answer_type - необязательный параметр, указание, что из ответа сервера нужно вернуть ('status' - вернет код статуса ответа; 'json' - вернет json из ответа; 'text' - вернет текст ответа сервера, любой иной вариант включая вариант по умолчанию вернет ответ вида '{"status": status_code, "data": data}')
headers - необязательный параметр, в нем передаете заголовки запроса, params - параметры get запроса (могут быть указаны в url),
Параметры функции
! block_id — идентификатора (id) блока
tg_approve_chat_join_request(chat_id, user_id) - принять заявку и добавить пользователя в канал/чат
tg_callback_url_open(callback_query_id, url) – установка реакции на callback-кнопку с переходом в бота с тэгом
tg_chat_permission(platform_id, permission, media_permissions) – установка общих ограничений для обычных пользователей чата или отдельных пользователей
tg_copy_message(platform_id, from_chat_id, message_id, reply_to_message_id, reply_markup, parse_mode, protect_content, disable_notification, message_thread_id ) – копирование сообщения
tg_create_chat_invite_link(platform_id, member_limit, hours, request,name) – создание ссылки на вступление в чат
tg_edit_forum_topic(platform_id, message_thread_id, name, icon) – переименование и/или смена эмодзи доп.темы
tg_edit_message_caption(platform_id, message_id, caption, reply_markup, parse_mode) – редактирование описания
tg_edit_message_reply_markup(platform_id, message_id, reply_markup) – редактирование инлайн-клавиатуры в сообщении
tg_edit_message_text(platform_id, message_id, text, reply_markup, parse_mode, disable_web_page_preview) – редактирование текста в сообщении
tg_export_chat_link(platform_id) - сделать неактивными все существующие ссылки и заменить их на одну
tg_forward_message(platform_id, from_chat_id, message_id, protect_content, disable_notification, message_thread_id) - пересылка сообщения
tg_pin_chat_message(platform_id, message_id, disable_notification) – как закрепить сообщение в чате/канале
tg_promote_user(platform_id, user_id, promote_options_list) - настройка прав пользователя / повышение до администратора в супер-группе или канале в Telegram
tg_restrict_chat_member(platform_id, user_id, minutes, permission, media_permissions) – установка персональных ограничений для обычных пользователей чата или для отдельных пользователей
tg_send_animation(platform_id, animation, caption, reply_markup, parse_mode, reply_to_message_id, protect_content, has_spoiler, disable_notification, message_thread_id) – отправка анимации
tg_send_chat_action(platform_id, bot_action, message_thread_id ) – показ пользователю действий бота (печатает / выбирает стикер и т.д.)
tg_send_contact(platform_id, phone, first_name, last_name, protect_content, disable_notification, reply_to_message_id, reply_markup, message_thread_id) – отправка контакта
tg_send_dice(platform_id, emoji, reply_markup, disable_notification, reply_to_message_id, protect_content, message_thread_id) – отправка эмодзи со случайным выбором (Dice)
tg_send_document(platform_id, document, caption, reply_markup, parse_mode,reply_to_message_id, protect_content, disable_notification, message_thread_id) – отправка документа
tg_send_message(platform_id, text,client_message_id, reply_markup, parse_mode, disable_web_page_preview, protect_content, disable_notification, message_thread_id) – отправка сообщения
tg_send_message_1(token, platform_id, text, client_message_id, reply_markup, parse_mode, disable_web_page_preview, protect_content, disable_notification, message_thread_id) – отправка сообщения с указанием конкретного бота
tg_send_photo(platform_id, photo, caption, reply_markup, parse_mode, reply_to_message_id, protect_content, has_spoiler, disable_notification, message_thread_id) – отправка картинки
tg_send_poll(platform_id, question, options, is_anonymous, allows_multiple_answers, reply_markup, disable_notification, protect_content, token, reply_to_message_id, message_thread_id ) – создание опроса
tg_send_quiz_poll(platform_id, question, options, explanation, correct_option_id, is_anonymous, reply_markup, parse_mode, protect_content, disable_notification, token, reply_to_message_id, message_thread_id ) – создание викторины
tg_send_some_audio(platform_id, audio_list, disable_notification, reply_to_message_id, message_thread_id) – отправка нескольких аудио
tg_send_some_document(platform_id, document_list, disable_notification, reply_to_message_id, message_thread_id) – отправка нескольких документов
tg_send_some_photo(platform_id, image_list, disable_notification=0, protect_content=False, reply_to_message_id=0, has_spoiler=False,message_thread_id) – отправка нескольких картинок
tg_send_some_video(platform_id, video_list, disable_notification, protect_content, reply_to_message_id, has_spoiler, message_thread_id) – отправка нескольких видео
tg_send_sticker(platform_id, sticker_id, protect_content, disable_notification, reply_to_message_id, reply_markup, message_thread_id) – отправка стикера
tg_send_venue(platform_id, latitude, longitude, title, address, protect_content, disable_notification, reply_to_message_id, reply_markup, message_thread_id) – отправка геоточки
tg_send_video(platform_id, video, caption, reply_markup, parse_mode, reply_to_message_id, protect_content, has_spoiler, disable_notification, message_thread_id) – отправка видео
tg_send_video_note(platform_id, video_note, reply_markup, protect_content, reply_to_message_id, disable_notification, message_thread_id) – отправка круглого видео
tg_send_voice(platform_id, voice, caption, reply_markup, parse_mode, reply_to_message_id, protect_content, disable_notification, message_thread_id) – отправка голосового сообщения
tg_set_administrator_title(platform_id, user_id, title) – изменение титула администратора с помощью бота
vk_ban_by_id(platform_id, user_id, token, end_date, reason, comment, visible) – бан пользователя, добавление пользователя в черный список
vk_callback_url(platform_id, vk_user_id, opened_url, event_id) – переход по ссылке при нажатии на кнопку
vk_edit_manager(platform_id, user_id, token, role, is_contact, position, phone, email) – назначение/удаление администратора группы с добавлением/удалением из списка контактов
vk_edit_message(platform_id, message_id, text, attachments_photo, attachments_files, keyboard, keep_forward_messages, keep_snippets, dont_parse_links, disable_mentions) – редактирование сообщения
vk_mark_conversation(platform_id, mark_type) – установка отметки «важный / отвеченный / прочитанный»
vk_remove_group_user(platform_id, user_id, token) – удаление пользователя из группы и всех бесед, созданных группой
vk_send_some_photo(platform_id, image_list, text, keyboard, dont_parse_links, disable_mentions) – отправка нескольких картинок
vk_send_message(platform_id, message, keyboard, reply_to, forward_messages, sticker_id, dont_parse_links, disable_mentions, attachments_photo, attachments_files) - отправка сообщения
vk_unmark_conversation(platform_id, mark_type) – снятие отметки «важный / отвеченный / прочитанный»
vk_vision_recognize_text(token, file_url) – распознавание текста на изображении, отправленном в бот
Постоянное меню Instagram
Постоянное меню позволяет создавать и отправлять меню основных функций вашего бизнеса, таких, как часы работы, расположение магазинов и продукты, которые всегда отображаются в разговоре человека с вашей компанией в Messenger.
Постоянное меню состоит из набора кнопок . В постоянном меню поддерживаются следующие типы кнопок:
● кнопки-ссылки URL (web_url)
● колбек-кнопки (postback)
response = ig_set_persistent_menu(login, buttons), где:
login - логин в инстаграме, можно посмотреть в меню Каналы в сейлбот,
buttons - словарь с кнопками
Пример оформления словаря с кнопками:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://salebot.ai/"]]}
default - обязательный ключ, описывает массив кнопок, которые будут в меню по умолчанию, не зависимо от локализации пользователя.
В качестве значения указывается массив с кнопками. Каждая кнопка описывается отдельным массивом:
["тип кнопки", "Отображаемый текст кнопки", "Текст, который придет в бот - callback"]
Типы кнопок и их описание:
- колбек-кнопка:
["postback", "Отображаемый текст кнопки", "Текст, который придет в бот"]
- кнопка-ссылка URL:
["web_url", "Отображаемый текст ссылки", "Ссылка"]
Настроить кнопки отдельно для разных регионов можно, используя для этого дополнительный ключ в словаре кнопок.
Например, добавим кнопки для русской локали:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://salebot.ai/"]], "ru_RU": [["postback", "Кнопа", "callback_text 1"], ["postback", "Кнопа 2", "callback_text 2"], ["web_url", "Ссылка", "https://salebot.pro/"]]}
Обратите внимание, что в данном случае ключ - это локаль, для которой будут отображаться кнопки.
Список всех доступных локалей:
af_ZA, ar_AR, as_IN, az_AZ, be_BY, bg_BG, bn_IN, br_FR, bs_BA, ca_ES, cb_IQ, co_FR, cs_CZ, cx_PH, cy_GB, da_DK, de_DE, el_GR, en_GB, en_UD, en_US, es_ES, es_LA, et_EE, eu_ES, fa_IR, ff_NG, fi_FI, fo_FO, fr_CA, fr_FR, fy_NL, ga_IE, gl_ES, gn_PY, gu_IN, ha_NG, he_IL, hi_IN, hr_HR, hu_HU, hy_AM, id_ID, is_IS, it_IT, ja_JP, ja_KS, jv_ID, ka_GE, kk_KZ, km_KH, kn_IN, ko_KR, ku_TR, lt_LT, lv_LV, mg_MG, mk_MK, ml_IN, mn_MN, mr_IN, ms_MY, mt_MT, my_MM, nb_NO, ne_NP, nl_BE, nl_NL, nn_NO, or_IN, pa_IN, pl_PL, ps_AF, pt_BR, pt_PT, qz_MM, ro_RO, ru_RU, rw_RW, sc_IT, si_LK, sk_SK, sl_SI, so_SO, sq_AL, sr_RS, sv_SE, sw_KE, sz_PL, ta_IN, te_IN, tg_TJ, th_TH, tl_PH, tr_TR, tz_MA, uk_UA, ur_PK, uz_UZ, vi_VN, zh_CN, zh_HK, zh_TW

Перечень локалей, применяемых в Facebook
Пример запроса:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://salebot.ai/"]], "ru_RU": [["postback", "Кнопа", "callback_text 1"], ["postback", "Кнопа 2", "callback_text 2"], ["web_url", "Ссылка", "https://salebot.pro/"]]}
response = ig_set_persistent_menu('login', buttons)
В случае успешного исполнения функция возвращает:
{"result":"success"}
Иначе - описание ошибки:
'Error parse buttons data' - ошибка в словаре кнопок
{"error":{"message":"(#100) param persistent_menu[0][call_to_actions] must be non-empty.","type":"OAuthException","code":100,"fbtrace_id":"AJtVczu7TEJJxbMfnO"}}
response = ig_delete_persistent_menu('login'), где login - имя аккаунта

login
В случае успешного исполнения функция возвращает:
{"result":"success"}
Иначе - описание ошибки:
'Bot not found'

Постоянное меню позволяет создавать и отправлять меню основных функций вашего бизнеса, таких, как часы работы, расположение магазинов и продукты, которые всегда отображаются в разговоре человека с вашей компанией в Messenger.
Постоянное меню состоит из набора кнопок . В постоянном меню поддерживаются следующие типы кнопок:
● кнопки-ссылки URL (web_url)
● колбек-кнопки (postback)
response = fb_set_persistent_menu("group_id", buttons)
где:
group_id - идентификатор бота в facebook, можно посмотреть в меню Каналы в сейлбот
buttons - словарь с кнопками
Пример оформления словаря с кнопками:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://salebot.ai/"]]}
default - обязательный ключ, описывает массив кнопок, которые будут в меню по умолчанию, не зависимо от локализации пользователя.
В качестве значения указывается массив с кнопками. Каждая кнопка описывается отдельным массивом:
["тип кнопки", "Отображаемый текст кнопки", "Текст, который придет в бот - callback"]
Типы кнопок и их описание:
- колбек-кнопки postback:
["postback", "Отображаемый текст кнопки", "Текст, который придет в бот"]
- кнопки-ссылки web_url
["web_url", "Отображаемый текст ссылки", "Ссылка"]
Настроить кнопки отдельно для разных регионов можно, используя для этого дополнительный ключ в словаре кнопок.
Например, добавим кнопки для русской локали:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://salebot.ai/"]], "ru_RU": [["postback", "Кнопа", "callback_text 1"], ["postback", "Кнопа 2", "callback_text 2"], ["web_url", "Ссылка", "https://salebot.pro/"]]}
Обратите внимание, что в данном случае ключ - это локаль, для которой будут отображаться кнопки.
Список всех доступных локалей:
af_ZA, ar_AR, as_IN, az_AZ, be_BY, bg_BG, bn_IN, br_FR, bs_BA, ca_ES, cb_IQ, co_FR, cs_CZ, cx_PH, cy_GB, da_DK, de_DE, el_GR, en_GB, en_UD, en_US, es_ES, es_LA, et_EE, eu_ES, fa_IR, ff_NG, fi_FI, fo_FO, fr_CA, fr_FR, fy_NL, ga_IE, gl_ES, gn_PY, gu_IN, ha_NG, he_IL, hi_IN, hr_HR, hu_HU, hy_AM, id_ID, is_IS, it_IT, ja_JP, ja_KS, jv_ID, ka_GE, kk_KZ, km_KH, kn_IN, ko_KR, ku_TR, lt_LT, lv_LV, mg_MG, mk_MK, ml_IN, mn_MN, mr_IN, ms_MY, mt_MT, my_MM, nb_NO, ne_NP, nl_BE, nl_NL, nn_NO, or_IN, pa_IN, pl_PL, ps_AF, pt_BR, pt_PT, qz_MM, ro_RO, ru_RU, rw_RW, sc_IT, si_LK, sk_SK, sl_SI, so_SO, sq_AL, sr_RS, sv_SE, sw_KE, sz_PL, ta_IN, te_IN, tg_TJ, th_TH, tl_PH, tr_TR, tz_MA, uk_UA, ur_PK, uz_UZ, vi_VN, zh_CN, zh_HK, zh_TW

Перечень локалей, применяемы в Facebook
Для этого в функции fb_set_persistent_menu укажите третий параметр, равный 1, т.е.:
response = fb_set_persistent_menu('group_id', buttons, 1)
Это меню будет доступно пользователю, для которого была вызвана функция.
ПРИМЕЧАНИЕ . Об новление меню, постоянного на уровне пользователя, происходит в режиме реального времени. При этом обновление меню, постоянного на уровне страницы, может занять до 24 часов.
Настройки на уровне пользователя ограничены скоростью до 10 вызовов на пользователя за 10 минут.
Для того, чтобы постоянное меню было единственным способом взаимодействия человека с вашим ботом Messenger, необходимо отключить композитор.
Для чего это может быть нужно? Это полезно, если ваш бот направлен на конкретную цель или набор параметров.
Как это сделать? Для этого в функцию нужно передать в качестве четвертого параметра цифру 1:
- отключить композитор на уровне страницы (для всех пользователей):
response = fb_set_persistent_menu('group_id', buttons, '', 1)
- отключить композитор для пользователя, для которого вызвана функция:
response = fb_set_persistent_menu('group_id', buttons, 1, 1)
где:
group_id - идентификатор бота в facebook, можно посмотреть в меню Каналы в Salebot
buttons - словарь с кнопками

Меню в Facebook
В случае успешного исполнения функция возвращает:
{"result":"success"}
Иначе - описание ошибки:
'Error parse buttons data' - ошибка в словаре кнопок
{"error":{"message":"(#100) param persistent_menu[0][call_to_actions] must be non-empty.","type":"OAuthException","code":100,"fbtrace_id":"AJtVczu7TEJJxbMfnO"}}
Добавление меню для всех пользователей, а также для РФ добавить перевод:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://salebot.ai/"]], "ru_RU": [["postback", "Кнопа", "callback_text 1"], ["postback", "Кнопа 2", "callback_text 2"], ["web_url", "Ссылка", "https://salebot.pro/"]]}
response = fb_set_persistent_menu('123456789', buttons)
Добавление меню для всех пользователей, для РФ добавить перевод, а также для всех сделать это меню единственным способом коммуникации:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://salebot.ai/"]], "ru_RU": [["postback", "Кнопа", "callback_text 1"], ["postback", "Кнопа 2", "callback_text 2"], ["web_url", "Ссылка", "https://salebot.pro/"]]}
response = fb_set_persistent_menu('123456789', buttons, '', 1)
Добавление меню для пользователя, который перешел в блок с вызовом функции:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://salebot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, 1)
Добавление меню для пользователя, который перешел в блок с вызовом функции, а также для всех сделать это меню единственным способом коммуникации:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://salebot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, 1, 1)
response = fb_delete_persistent_menu('group_id')
В случае успешного исполнения функция возвращает:
{"result":"success"}
Иначе описание ошибки:
'Bot not found'
response = fb_delete_persistent_menu('group_id', 1)
В случае успешног о исполнения функция возвращает:
{"result":"success"}
Иначе - описание ошибки:
'Bot not found'
Если отсутствует необходимый метод, свяжитесь со службой поддержки.
Для получения токена используется метод:
amo_token = amo_get_token()
Для добавления новой сделки можно воспользоваться методом amo_add_lead(lead_data, идентификатор контакта) идентификатор контакта - необязательный параметр, автоматически берется из переменной amo_client_id.
lead_data - словарь с набором данных для нового лида. Параметр lead_data имеет вид словар я в одинарных кавычках, ключи и значения в двойных. Максимальный набор параметров:
amo_add_lead('{"name": "Новый ЛИД", "budget": бюджет, "responsible_id": идентификатор ответственного}')
Идентификатор ответственного - по умолчанию берется первый созданный сотрудник
Минимальный набор параметров:
amo_add_lead('{"name": "Новый ЛИД"}')
Чтоб переименовать сделку клиента, достаточно вызвать функцию amo_set_lead_name(Новое название, идентификатор сделки) идентификатор сделки - необязательный параметр, автоматически берется из переменной amo_lead_id
Пример:
amo_set_lead_name("Новое название")
amo_change_state(status_id, lead_id, pipeline_id)
Параметры:
status_id — id этапа воронки, на который надо перенести бота,
lead_id — id сделки, которую необходимо передвинуть( необязательный параметр, по умолчанию берется из переменной amo_lead_id). Можно пропустить параметр, заменив на None или на двойные кавычки "".
Пример как пропустить параметр:
amo_change_state(status_id, "", pipeline_id)
pipeline_id — ID воронки, если сделка находится в другой воронке амо (необязательный параметр). Можно пропустить параметр, заменив на None.
Пример как пропустить два необязательных параметра:
amo_change_state(status_id)
Если номер сделки подтягивается из стандартной переменной amo_lead_id, тогда его можно не передавать: amo_change_state(status_id, "", pipeline_id)
Ид состояния необходимо взять из исходников страницы AmoCRM:

amo_get_lead_info(lead_id)
где lead_id — id сделки (необязательный параметр, по умолчанию берется из переменной amo_lead_id). Можно пропустить параметр, заменив на None или не передавать.
Пример получения информации о текущей сделки:
amo_get_lead_info()
amo_get_lead_custom_field(var_id, lead_id)
где lead_id — id сделки (необязательный параметр, по умолчанию берется из переменной amo_lead_id).
var_id — номер кастомного поля или его название, из которого нужно получить значение
Пример:
var_id = 682233
amo_get_lead_custom_field(var_id, None)
Узнать номер кастомного поля можно, открыв ссылку в браузере:
вашдомен.amocrm.ru/api/v4/leads/custom_fields
Как получить номер кастомного поля можно также посмотреть в этой статье: https://docs.salebot.pro/crm/integraciya-s-amocrm#kak-otpravit-kastomnye-polya-amocrm
Передача одного значения в кастомное поле:
amo_add_lead_custom_fields("идентификатор поля", "Значение")
Также третьим параметром можно передать вручную идентификатор сделки, в ином случае он автоматически подтягивается из переменной: amo_lead_id
amo_add_lead_custom_fields("идентификатор поля", "Значение", "идентификатор сделки")
Передача нескольких значений одновременно:
amo_add_lead_custom_fields('{"идентификатор поля": "Значение", "идентификатор поля2": "Значение2", "идентификатор поля3": "Значение3"}')
Пример: amo_add_lead_custom_fields('{"582601": "222333333", "588091": "red"}')
Также третьим параметром можно передать вручную идентификатор сделки, в ином случае он автоматически подтягивается из переменной: amo_lead_id. При этом вторым нужно передать две одинарные кавычки!
amo_add_lead_custom_fields('{"идентификатор поля": "Значение", "идентификатор поля2": "Значение2", "идентификатор поля3": "Значение3"}', '', "идентификатор сделки")
amo_get_contact_info(contact_id)
где amo_contact_id — id сделки, информацию о которой необходимо получить(необязательный параметр, по умолчанию берется из переменной amo_contact_id). Можно пропустить необязательный параметр, заменив его на None.
amo_get_contact_custom_field(var_id, contact_id)
где
amo_contact_id — id контакта, информацию о котором необходимо получить(необязательный параметр, по умолчанию берется из переменной amo_contact_id). Можно пропустить необязательный параметр, заменив его на None.
var_id — номер кастомного поля или его название, из которого нужно получить значение
Узнать номер кастомного поля можно, открыв ссылку в браузере:
вашдомен.amocrm.ru/api/v4/contacts/custom_fields
amo_add_contact_custom_fields("идентификатор поля", "Значение")
Также третьим параметром можно передать вручную идентификатор сделки, в ином случае он автоматически подтягивается из переменной клиента: amo_client_id
amo_add_contact_custom_fields("идентификатор поля", "Значение", "идентификатор сделки")
amo_add_contact_custom_fields('{"идентификатор поля": "Значение", "идентификатор поля2": "Значение2", "идентификатор поля3": "Значение3"}')
Пример: amo_add_contact_custom_fields('{"582601": "222333333", "588091": "red"}')
Также третьим параметром можно передать вручную идентификатор контакта, в ином случае он автоматически подтягивается из переменной клиента: amo_client_id. При этом вторым нужно передать две одинарные кавычки!
amo_add_contact_custom_fields('{"идентификатор поля": "Значение", "идентификатор поля2": "Значение2", "идентификатор поля3": "Значение3"}', '', "идентификатор сделки")
amo_create_task(title, assigned_id, minutes_deadline, task_type_id, lead_id)
где lead_id — id сделки, для которой необходимо поставить задачу(необязательный параметр, по умолчанию берется из переменной amo_lead_id). Можно пропустить необязательный параметр, заменив его на None.
deadline — время в минутах до завершения задачи,
assigned_user_id — id ответственного,
task_type_id — id типа задачи,
title — текст задач
Чтобы получить id типа задачи необходимо в браузере открыть ссылку:
вашд омен.amocrm.ru/api/v4/tasks
amo_set_tags(tags, lead_id)
где lead_id — id сделки, для которой устанавливаются теги(необязательный параметр, по умолчанию берется из переменной amo_lead_id). Можно пропустить необязательный параметр, заменив его на None.
tags — список тегов, перечисленных через запятую.
amo_set_budget(budget, lead_id)
где lead_id — id сделки, для которой устанавливается бюджет(необязательный параметр, по умолчанию берется из переменной amo_lead_id). Можно пропустить необязательный параметр, заменив его на None.
budget — сумма сделки
amo_add_notes(text, lead_id)
где:
lead_id — id сделки, для которой устанавливается бюджет(необязательный параметр, по умолчанию берется из переменной amo_lead_id). Можно пропустить необязательный параметр, заменив его на None.
text — текст примечания

amo_add_contact_notes(text, contact_id)
где:
contact_id— id контакта, для которой устанавливается бюджет(необязательный параметр, по умолчанию берется из переменной amo_client_id). Можно пропустить необязательный параметр, заменив его на None.
text — текст примечания.
amo_set_contact_name('Имя', 'Фамилия')
Обязателен первый параметр!
Пример: amo_set_contact_name('Жульен', 'Агутин')
Также третьим параметром можно передать вручную идентификатор контакта, в ином случае он автоматически подтягивается из переменной клиента: amo_client_id. При этом, если не передан второй параметр (фамилия), то вместо него нужно передать две одинарные кавычки!
Пример: amo_set_contact_name('Жульен', '', '1234567')
Чтобы задать клиенту в AmoCRM номер телефона и е-мейл необходимо в поле «Калькулятор» задать переменные:
client.phone = Телефон
client.email = Емейл
Данные из этих переменных передадутся в желтых и красных блоках в CRM
amo_set_lead_responsible_user( responsible_user_id, lead_id)
где responsible_user_id – идентификатор назначенного пользователя
Пример:
amo_set_lead_responsible_user(5912572)

Где найти идентификатор ответственного (код страницы)
Идентификатор поля можно найти в коде страницы, нажав правой кнопкой мыши на названии нужного поля:
bitrix_add_deal_comment(text, bitrix_deal_id),где
text - текст комментария
bitrix_deal_id - необязательный параметр, идентификатор сделки, если не передан автоматически будет взят из переменной bitrix_deal_id
bitrix_add_contact_comment(text, bitrix_contact_id), где
text - текст комментария
bitrix_contact_id - необязательный параметр, идентификатор контакта, если не передан автоматически будет взят из переменной bitrix_contact_id
bitrix_add_lead_comment(text, bitrix_lead_id), где
text - текст комментария
bitrix_lead_id - необязательный параметр, идентификатор лида, если не передан автоматически будет взят из переменной bitrix_lead_id
bitrix_deal_responsible(assigned_by_id, bitrix_deal_id ), где
assigned_by_id - идентификатор пользователя в битрикс
bitrix_deal_id - необязательный параметр, идентификатор сделки, если не передан автоматически будет взят из переменной bitrix_deal_id
bitrix_contact_responsible(assigned_by_id, bitrix_contact_id), где
assigned_by_id - идентификатор пользователя в битрикс
bitrix_contact_id - необязательный параметр, идентификатор контакта, если не передан автоматически будет взят из переменной bitrix_contact_id
bitrix_lead_responsible(assigned_by_id, bitrix_lead_id)
assigned_by_id - идентификатор пользователя в битрикс
bitrix_lead_id - необязательный параметр, идентификатор лида, если не передан автоматически будет взят из переменной bitrix_lead_id
bitrix_deal_fields(fields, bitrix_deal_id), где
fields - словарь с именами полей и значениями, описание ниже (ссылка на имена полей ниже)
bitrix_deal_id - необязательный параметр, идентификатор сделки, если не передан автоматически будет взят из переменной bitrix_deal_id
bitrix_contact_fields(fields, bitrix_contact_id), где
fields - словарь с именами полей и значениями, описание ниже (ссылка на имена полей ниже)
bitrix_contact_id - необязательный параметр, идентификатор контакта, если не передан автоматически будет взят из переменной bitrix_contact_id
bitrix_lead_fields(fields, bitrix_lead_id), где
fields - словарь с именами полей и значениями, описание ниже (ссылка на имена полей ниже)
bitrix_lead_id - необязательный параметр, идентификатор лида, если не передан автоматически будет взят из переменной bitrix_lead_id
Параметр fields имеет вид словаря в одинарных кавычках, ключи и значения в двойных:
'{"Название поля": "значение", "Название поля2": "значение2"}'
Для примера изменим поля в сделке:
bitrix_lead_fields('{"ADDITIONAL_INFO": "Дополнительная информация", "UTM_CONTENT": "Содержание кампании"}')
bitrix_deal_search(search_filter, select_fields, order)
bitrix_contact_search(search_filter, select_fields, order)
bitrix_lead_search(search_filter, select_fields, order)
bitrix_product_search(search_filter, select_fields, order)
Во всех этих функциях:
search_filter
- словарь с именами полей и значениями для фильтрации (ссылки на имена полей ниже)Пример:
'{">OPPORTUNITY": 0, "STAGE_ID": "NEW"}'
- OPPORTUNITY больше 0 и STAGE_ID равен NEW Если нужно отрицание, то добавить вначале поля восклицательный знак. Пример: "!STAGE_ID": "NEW" - НЕ равен NEWselect_fields
- массив имен полей, которые необходимо получить в результате (необязательный параметр) Пример: '["ID", "TITLE"]'
order
- (необязательный параметр) параметры сортировки.В результате работы функция возвращает словарь с двумя параметрами:
{'result': [], 'total': 0}
result - массив найденных значений total - сколько найдено всегоПример:
result = bitrix_deal_search('{"STAGE_ID": "NEW"}', '["ID", "TITLE", "UF_CRM_1637142365873"]')
условие для фильтра это сделки на стадии NEW и вернуть для найденых сделок идентификатор, заголовок и пользовательское поле (как узнать идентификатор пользовательского поля читайте https://docs.salebot.pro/integracii/crm/integraciya-s-bitriks-24#kak-uznat-id-polzovatelskogo-polya )В результате, если такие сделки найдены придет следующий ответ:
{'result': [{'ID': '5', 'UF_CRM_1637142365873': 'значение поля'}, {'ID': '7', 'UF_CRM_1637142365873': None}], 'total': 2}
Ссылки на доступные стандартные поля можно найти по ссылке: https://docs.salebot.pro/integracii/crm/integraciya-s-bitriks-24#zapolnenie-polei-sdelok-i-lidov
Для закрытия чата оператором в bitrix используется функция bitrix_dialog_finish(chat_id), где
chat_id — идентификатор чата в системе Битрикс.
Каждая функция принимает первым параметром sheet_id идентификатор таблицы. Вы можете получить его из ссылки на вашу гугл таблицу (то что выделено жирным в ссылке ниже). https://docs.google.com/spreadsheets/d/1aUbbUaw2SRnJFAavv06Noa1EzumhyShKDm7ie6lYlc4/edit#gid=0
Для удобства идентификатор таблицы лучше записать в переменную и передавать ее в функции
Все функции, описанные ниже возвращают словарь с результатом работы. Он обязательно включает status, который в зависимости от результата либо true при успехе, либо false, при ошибке.
Если статус true, то могут присутствовать и другие параметры, которые можно получить воспользовавшись функцией get()
Если статус false, то присутствует параметр err, в котором описание ошибки.
Если вы планируете работу не с первым листом таблицы, то можно передать дополнительный параметр worksheet_name_or_id_or_index. Каждая из функций принимает этот параметр, который соответствует либо названию листа, либо его идентификатору.
Словарь - некоторые функции принимают параметром словарь с набором определенных данных. Есть ряд правил, которые нужно соблюдать.
- весь словарь заключается в одинарные кавычки '{}'
- ключи и значения (текст или переменная) в словаре заключаются в двойные кавычки '{"key": "value", "key2": "#{email}"}'
По умолчанию конструктор работает с собственными сервисными аккаунтами для доступа к вашим таблицам. Поэтому вам необходимо выдавать доступ на редактирование по ссылке.
Чтобы обеспечить достаточный уровень безопасности, вы можете использовать личные ключи с аутентификационными данными.
У гугл таблиц есть лимиты на количество запросов в единицу времени. Чтобы не зависеть от лимитов, вы можете использовать свой аккаунт.
Для этого в настройках проект в “Константы проекта”, нужно добавить переменную sheet_json_keys с массивом ваших ключей.
Он может содержать как ключи json из файла, так и url адреса на файл ключа.
Ключ json из файла - получаем файл с ключом (как его получить - читайте ниже), открываем любым текстовым редактором и копируем содержимое и добавляем в массив.
Url адреса на файл ключа - самый простой путь получения такого url - загрузить файл с данными в конструктор. Для этого нужно создать блок не состояние, во вложения - загрузить файл с сервисными данными (как его получить - читайте ниже). После этого нужно кликнуть правой кнопкой по названию файла и выбрать пункт Копировать адрес ссылки.
Четыре примера переменной sheet_json_keys:
- 1.["url адрес на файл ключа", "url адрес на файл ключа 2"]
2. ["url адрес на файл ключа", "url адрес на файл ключа 2", {json ключ из файла}, {json ключ из файла}]
3. [{json ключ из файла}]
(ключ на скриншоте укорочен, реальный ключ на порядок больше)
4. ["url адрес на файл ключа"]
Ключи прописываем в Константах проекта.
В функциях (API) в калькуляторе передавать дополнительный параметр не нужно, ключи подтянутся автоматически.
Если в переменной sheet_json_keys указано несколько сервисных аккаунтов, то настройки доступа к таблице на стороне Google делаем на ВСЕ УКАЗАННЫЕ в переменной sheet_json_keys СЕРВИСНЫ Е АККАУНТЫ.
Если вы настраиваете интеграцию в разделе Запросы редактора блока, то необходимо передать дополнительный параметр creds_path с url вашего файла с данными. Как это сделать описано здесь
Подробнее о том, как работать через свой аккаунт с Google - таблицами и получении ключа читайте в этой статье:

Google
Salebot.pro
переход к статье "Подготовка сервисного аккаунта"
Salebot поддерживает создание новых таблиц. Для этого у Вас должна быть переменная sheet_json_keys (как ее создать можно посмотреть тут)
Функция для создания таблиц:
sheet_create_spreadsheet(new_worksheet_title, google_email), где
new_worksheet_title - имя вашей новой Google-таблицы.
google_email - почта вашего Google-аккаунта.
Переменная google_email необходима для передачи указанной почте прав редактора созданной таблицы, т.к google автоматически присваивает права владельца вашему зарегистрированному ранее Google-проекту. К сожалению, на данный момент это единственная возможность создавать Google-таблицы через Api.
Пример:
new = sheet_create_spreadsheet('ЧЕМОДАНчик', '[email protected]')