Salebot.pro
Search
⌃K

Функции (API) в калькуляторе

Упрощенные вызовы API из калькулятора
Функции API в калькуляторе работают ТОЛЬКО на тарифе Премиум

API Salebot

ОБОЗНАЧЕНИЯ: ! - Обязательные параметры

Как отправить Callback

callback()

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

Как отправить Callback в Telegram

tg_callback()

Описание
Примеры
Пример кода для копирования
Видеоразбор
tg_callback(platform_id , callback_message,group_id)
Параметры:
! platform_id - идентификатор клиент Telegram
! callback_message - текст сообщение в колбеке
group_id - идентификатор бота Telegram
tg_callback('73704021', 'callback TEST123')
Разбор функции callback()

Как в реакции на callback-кнопку добавить переход в бота с тэгом

tg_callback_url_open(callback_query_id, url)
Параметры: ! callback_query_id - данный id позволяет идентифицировать нажавшего кнопку и продемонстрировать ему Alert-уведомление, ! url - URL-адрес, указывающий бота и параметр (выглядит так: t.me/your_bot?start=XXXX, вместо your_bot - имя бота)

Как отправить клиенту сообщение

message() | platform_message() | whatsapp_message()

Описание
Примеры
Пример кода
Видеоразбор
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)
Параметры: ! platform_id - идентификатор клиента в мессенджере ! text - текст сообщения client_type - тип мессенджера, необязательный параметр. Если не указан, то клиента будут искать в том же мессенджере, из которого бот отправляет сообщение. Если указан, то клиент будет найден среди базы данных указанного мессенджера. Используемые типы мессенджеров можно найти тут. message_id - идентификатор блока. Если указан, то клиент получит сообщение из указанного блока, а не значение из text. timeout - время отправки или задержка. Аналогичен одноименному параметру функции message()
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()

Получение client_id по значению platform_id

get_client_id_by_platform_id()

Описание
Пример кода
get_client_id_by_platform_id(client_type, platform_id , group)
При выполнении функция вернет client_id, если найдет клиента по заданным условиям, иначе вернет None.
! client_type - мессенджер. Значение client_type посмотрите в этой статье.
! platform_id - ID клиента в указанном мессенджере.
group - обязательный, если подключено более одного бота для мессенджера.
Если в проекте подключено несколько мессенджеров одного типа, то искать будет по всем подключенным данного типа.
Рекомендуем в этом случае передавать параметр group

API Telegram

some_client_in_list(list_id, recepient) – проверка состоит ли участник чата в определенном списке
tg_answer_callback_query(callback_query_id, text) – показ пользователю Alert-уведомления
tg_approve_chat_join_request(chat_id, user_id) - принять заявку и добавить пользователя в канал/чат
tg_ban_chat_member(chat_id, user_id, hours) – блокировка (бан) подписчика чата/канала
tg_ban_chat_sender_chat(platform_id, sender_chat_id) – отправка в бан группы
tg_callback_url_open(callback_query_id, url) – установка реакции на callback-кнопку с переходом в бота с тэгом
tg_chat_permission(platform_id, permission, media_permissions) – установка общих ограничений для обычных пользователей чата или отдельных пользователей
tg_close_forum_topic(platform_id, message_thread_id) – закрытие доп.темы
tg_close_general_forum_topic(platform_id) – закрытие Главной темы
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_create_forum_topic(platform_id, name, icon, icon_color) – создание доп.темы
tg_decline_chat_join_request(chat_id, user_id) – отклонить заявку в канал/чат
tg_delete_chat_photo(platform_id) – удаление аватарки на группу/чат
tg_delete_command(language, scope, platform_id, user_id) – удаление команд бота
tg_delete_forum_topic(platform_id, message_thread_id) - удалить доп.тему со всеми сообщениями
tg_delete_message(platform_id, message_id) - удаление сообщения
tg_edit_forum_topic(platform_id, message_thread_id, name, icon) – переименование и/или смена эмодзи доп.темы
tg_edit_general_forum_topic(platform_id, topic_name) – переименование Главной темы группы
tg_edit_message_caption(platform_id, message_id, caption, reply_markup, parse_mode) – редактирование описания
tg_edit_message_media(platform_id, message_id, media, reply_markup) – редактирование медиавложений
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_get_bot_description(language_code) - Получение текущего описания
tg_get_bot_short_description(language_code) - Получение текущего краткого описания
tg_get_chat_member(chat_id, user_id) – проверка наличия подписки
tg_get_chat_member_count(platform_id) – определение числа участников чата/канала
tg_get_command(language, scope, platform_id, user_id) – просмотр команд бота
tg_get_forum_icon() – получить список эмодзи для Темы
tg_hide_general_forum_topic(platform_id) – скрыть Главную тему
tg_pin_chat_message(platform_id, message_id, disable_notification) – как закрепить сообщение в чате/канале
tg_promote_user(platform_id, user_id, promote_options_list) - настройка прав пользователя / повышение до администратора в супер-группе или канале в Telegram
tg_reopen_forum_topic(platform_id, message_thread_id) – открыть ранее закрытую доп.тему
tg_reopen_general_forum_topic(platform_id) – открытие ранее закрытой Главной темы
tg_restrict_chat_member(platform_id, user_id, minutes, permission, media_permissions) – установка персональных ограничений для обычных пользователей чата или для отдельных пользователей
tg_revoke_chat_invite_link(platform_id, invite_link) – удаление ссылки на вступление в чат
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) – изменение титула администратора с помощью бота
tg_set_bot_description(description, language_code) - Установка приветственного сообщения
tg_set_bot_short_description(description, language_code) - Установка описания для превью ссылки
tg_set_chat_description(platform_id, description) – смена описания чата через бот
tg_set_chat_photo(platform_id, photo) – установка аватарки на группу/чат
tg_set_command(commands, language, scope, platform_id, user_id) – установка команд бота
tg_set_group_title(platform_id, title) – смена имени чата через бот
tg_stop_poll(platform_id, message_id) – завершение опроса
tg_unban_chat_member(chat_id, user_id) - разблокировка (разбан) подписчика чата/канала
tg_unban_chat_sender_chat(platform_id, sender_chat_id) – снятие бана с группы
tg_unhide_general_forum_topic(platform_id) – отобразить Главную тему
tg_unpin_all(platform_id) – как открепить все закрепленные сообщения
tg_unpin_chat_message(platform_id, message_id) – как открепить сообщение в чате/канале
tg_unpin_topic_messages(platform_id, message_thread_id) - открепить все собщения доп.темы

API ВКонтакте

Подробно о подключении и использовании ВК ТУТ
check_vk_subscription(group_id) – проверка подписки на сообщество
comment_text() – получение текста комментария
vk_approve_request(platform_id, user_id, token) - принятие заявки на вступление в группу
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_close_comment(owner_id,post_id,token) – запретить комментирование поста
vk_create_comment(post_id, message, reply_to_comment, sticker_id) – создание комментария на стене
vk_delete_last_message() – удаление последнего сообщения в беседе
vk_delete_messages(platform_id, message_ids) – удаление сообщений
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_export_chat_link(platform_id, new) – получение ссылки-приглашения на группу
vk_get_chat_member_count(platform_id) – получение количества подписчиков на чат в группе
vk_get_name(platform_id, full) – получение имени пользователя
vk_get_short_link(link, private, user_token) – создание короткой ссылки
vk_mark_conversation(platform_id, mark_type) – установка отметки «важный / отвеченный / прочитанный»
vk_open_comment(owner_id,post_id,token) – разрешить комментирование поста
vk_pin_message(platform_id, conversation_message_id) – закрепление сообщения
vk_remove_group_user(platform_id, user_id, token) – удаление пользователя из группы и всех бесед, созданных группой
vk_search_message(serched_text, platform_id) – поиск сообщения по тексту
vk_send_chat_action(platform_id, bot_action) – показ действий бота
vk_send_some_photo(platform_id, image_list, text, keyboard, dont_parse_links, disable_mentions) – отправка нескольких картинок
vk_send_sticker(platform_id, sticker_id) – отправка стикера
vk_show_alert_message(platform_id, vk_user_id, text, event_id) – показ исчезающего сообщения
vk_unban_by_id(platform_id, user_id, token) – разбан, удаление из черного списка
vk_unmark_conversation(platform_id, mark_type) – снятие отметки «важный / отвеченный / прочитанный»
vk_unpin_message(platform_id) – открепление сообщения
vk_vision_recognize_text(token, file_url) – распознавание текста на изображении, отправленном в бот

API Instagram

Что такое постоянное меню

Постоянное меню 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'

API Facebook

Что такое постоянное меню

Постоянное меню позволяет создавать и отправлять меню основных функций вашего бизнеса, таких, как часы работы, расположение магазинов и продукты, которые всегда отображаются в разговоре человека с вашей компанией в 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

Как добавить меню, поcтоянное на уровне пользователя

Для этого в функции 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'

API AmoCRM

Подробно о подключении и использовании AmoCRM ТУТ
Если отсутствует необходимый метод, свяжитесь со службой поддержки.

Как получить токен

Для получения токена используется метод:
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=None, pipeline_id=None)
Параметры:
status_id — id этапа воронки, на который надо перенести бота,
lead_id — id сделки, которую необходимо передвинуть(необязательный параметр, по умолчанию берется из переменной amo_lead_id)
pipeline_id — ID воронки, если сделка находится в другой воронке амо (необязательный параметр)
Если номер сделки подтягивается из стандартной переменной amo_lead_id, тогда его можно не передавать: amo_change_state(status_id, "", pipeline_id)
Ид состояния необходимо взять из исходников страницы AmoCRM:

Как получить информацию по сделке

amo_get_lead_info(lead_id=None)
где lead_id — id сделки (необязательный параметр, по умолчанию берется из переменной amo_lead_id).

Получить значение кастомного поля сделки

amo_get_lead_custom_field(var_id, lead_id=None)
где lead_id — id сделки (необязательный параметр, по умолчанию берется из переменной amo_lead_id). var_id — номер кастомного поля или его название, из которого нужно получить значение
Узнать номер кастомного поля можно, открыв ссылку в браузере: вашдомен.amocrm.ru/api/v4/leads/custom_fields

Как отправить кастомные поля сделке

Передача одного значения в кастомное поле:
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=None)
где amo_contact_id — id сделки, информацию о которой необходимо получить(необязательный параметр, по умолчанию берется из переменной amo_contact_id).

Как получить значение кастомного поля клиента

amo_get_contact_custom_field(var_id, contact_id=None)
где amo_contact_id — id контакта, информацию о котором необходимо получить(необязательный параметр, по умолчанию берется из переменной amo_contact_id). 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=None)
где lead_id — id сделки, для которой необходимо поставить задачу(необязательный параметр, по умолчанию берется из переменной amo_lead_id). deadline — время в минутах до завершения задачи, assigned_user_id — id ответственного, task_type_id — id типа задачи, title — текст задач
Чтобы получить id типа задачи необходимо в браузере открыть ссылку: вашдомен.amocrm.ru/api/v4/tasks

Как установить теги

amo_set_tags(tags, lead_id=None)
где lead_id — id сделки, для которой устанавливаются теги(необязательный параметр, по умолчанию берется из переменной amo_lead_id). tags — список тегов, перечисленных через запятую.

Как установить бюджет

amo_set_budget(budget, lead_id=None)
где lead_id — id сделки, для которой устанавливается бюджет(необязательный параметр, по умолчанию берется из переменной amo_lead_id). budget сумма сделки

Как вставить примечания

amo_add_notes(text, lead_id=None)
где: lead_id — id сделки, для которой устанавливается бюджет(необязательный параметр, по умолчанию берется из переменной amo_lead_id). text текст примечания

Как вставить примечание к контакту

amo_add_contact_notes(text, contact_id=None) где: contact_id— id контакта, для которой устанавливается бюджет(необязательный параметр, по умолчанию берется из переменной amo_client_id). text — текст примечания.

Как изменить имя, фамилию контакта

amo_set_contact_name('Имя', 'Фамилия')
Обязателен первый параметр!
Пример: amo_set_contact_name('Жульен', 'Агутин')
Также третьим параметром можно передать вручную идентификатор контакта, в ином случае он автоматически подтягивается из переменной клиента: amo_client_id. При этом, если не передан второй параметр (фамилия), то вместо него нужно передать две одинарные кавычки!
Пример: amo_set_contact_name('Жульен', '', '1234567')

Как задать контакту номер телефона и e-mail

Чтобы задать клиенту в AmoCRM номер телефона и е-мейл необходимо в поле «Калькулятор» задать переменные:
client.phone = Телефон
client.email = Емейл
Данные из этих переменных передадутся в желтых и красных блоках в CRM

Как задать ответственного сотрудника для сделки

amo_set_lead_responsible_user( responsible_user_id, lead_id=None)
где responsible_user_id – идентификатор назначенного пользователя
Пример: amo_set_lead_responsible_user(5912572)
Где найти идентификатор ответственного (код страницы)

Как найти идентификатор поля

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

API Битрикс24

Подробно о подключении и использовании Битрикс24 ТУТ

Как добавить комментарий

Сделка

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" - НЕ равен NEW
select_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 используется функция bitrix_dialog_finish(chat_id), где chat_id — идентификатор чата в системе Битрикс.

API Google-таблиц

Подробно о подключении и использовании google-таблиц ТУТ
Каждая функция принимает первым параметром 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. 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

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]')
После обновления страницы Google-таблиц в Вашем аккаунте Вы найдете новую таблицу:
В списке переменных клиента появится переменная google_spreadsheet_id, в которой будет записан идентификатор новой таблицы.
Если проблем при выполнении запроса не возникло, то в ответ приходит словарь содержащий статус и уведомление: {'status': True, 'message': Google worksheet ‘ЧЕМОДАНчик’ is created'}
status - результат копирования result - сообщение об операции Если возникла ошибка, то вернется статус false и описание ошибки.

Как добавить новый лист в Google-таблицу

Осуществляется с помощью функции:
sheet_create_worksheet(sheet_id, list_name, cols=None, rows=None)
Функция возвращает словарь с идентификатором нового листа и статусом True ({"status":true,"list_id":1063146761}) или описание ошибки, если статус False ({"status":false,"err":"Ошибка или описание"})
Пример:
result = sheet_create_worksheet('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzTl', "New list")
status = get(result, 'status')
Добавление нового листа в Google-таблицу

Как удалить лист в Google-таблице

Чтобы удалить лист в таблице, воспользуйтесь функцией sheet_delete_worksheet(sheet_id, worksheet_name_or_index), где: sheet_id - это идентификатор вашей Google-таблицы, worksheet_name_or_id_or_index - название листа или идентификатор листа, который нужно удалить
Пример:
deleted_sfh = sheet_delete_worksheet('1oP8Ax4A7FKUY7Mv9eAYAM8q0J0ddlKaD8dOa076AtvQ', 'Лист14')
Удаление листа из Google-таблицы
Функция вернет ответ по типу {"status":true,"result":"worksheet Лист14 is deleted"}. В случае возникновения ошибки, функция вернет ее описание.

Как получить количество листов в Google-таблице

Чтобы получить количество листов, а также список пар “номер листа” - “название листа” , используйте функцию sheet_worksheet_indexes(sheet_id), где sheet_id - это идентификатор вашей Google-таблицы
Пример:
worksheet_indexes = sheet_worksheet_indexes('1oP8Ax4A7FKUY7Mv9eAYAM8q0J0ddlKaD8dOa076AtvQ')
Получение общего числа листов в Google-таблице
Функция вернет ответ по типу {"status":true,"worksheets_count":10,"worksheet_titles":{"1":"Лист1","2":"Лист2","3":"cvtyf","4":"Лист4","5":"о да","6":"Это новый лист","7":"вль и я","8":"таракан","9":"чемодан","10":"БАЗА ДАННЫХ"}}.
В случае ошибки функция вернет ответ с ее описанием

Как переименовать лист в Google-таблице

Чтобы переименовать лист, используйте функцию sheet_rename_worksheet(sheet_id, worksheet_name_or_index, new_tile), где: sheet_id - это идентификатор вашей Google-таблицы, worksheet_name_or_id_or_index - название листа или идентификатор листа, который надо переименовать, new_tile - новое название
Пример:
worksheet_title_change = sheet_rename_worksheet('1oP8Ax4A7FKUY7Mv9eAYAM8q0J0ddlKaD8dOa076AtvQ','Лист5','о да')
Переименование листа в Google-таблице

Как осуществить построчную запись в определенные столбцы

Вы можете собрать множество данных от пользователя и записать их в первую свободную в таблице строку.
В таблице должна быть заполнена шапка (хотя бы одна ячейка в первой строке)
Осуществляется с помощью функции:
sheet_mapping_cells(sheet_id, cell_data, worksheet_name_or_id_or_index=None)
sheet_id - это идентификатор вашей гугл таблицы.
cell_data - словарь с параметрами. '{"A": "value", "D": "#{email}"}' - где ключ это буква колонки
worksheet_name_or_id_or_index - необязательный параметр, название листа, порядковый номер или идентификатор листа
Если проблем при выполнении запроса не возникло, то в ответ приходит словарь {"status":true,"number_row":14}, можно сохранить номер строки number_row и использовать для дальнейшей работы.
Пример:
result = sheet_mapping_cells('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzT', '{"a":"aaaaa", "B": "#{email}"}')
status = get(result, 'status')
number_row = get(result, 'number_row')
Пример с указанием идентификатора листа:
list_name = Рейтинг
result = sheet_mapping_cells('#{gsheet_id}', '{"a":"#{client_id}", "B": "#{ball}"}','#{list_name}')

Как осуществить запись в первую пустую строку

Вы можете собрать множество данных от пользователя и записать их в первую свободную в таблице строку. Работает аналогично mapping, но при достижении конца таблицы добавляет новые строки.
Обратите внимание, что данный метод записывает не в самый низ, а в первую пустую строку! Использовать его лучше всего для постоянного дописи одних и тех же колонок
Осуществляется с помощью функции:
sheet_append_row(sheet_id, cell_data, worksheet_name_or_id_or_index=None)
sheet_id - это идентификатор вашей гугл таблицы.
cell_data - словарь с параметрами. '{"A": "value", "D": "#{email}"}' - где ключ это буква колонки
worksheet_name_or_id_or_index - необязательный параметр, название листа, порядковый номер или идентификатор листа
Если проблем при выполнении запроса не возникло, то в ответ приходит словарь {"status":true,"number_row":14}, можно сохранить номер строки number_row и использовать для дальнейшей работы.
Пример:
result = sheet_append_row('12sSVR3Wk-1kNb9CsjyJ2gjLb_PiRl5DhbF4YcD1VzT', '{"a":"aaaaa", "B": "#{email}"}')
status = result["status"]
number_row = result["number_row"]
Пример записи на первый лист таблицы