Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam

Топ прошлой недели

  • CharlotteLink CharlotteLink 1 пост
  • Syslikagronom Syslikagronom 7 постов
  • BydniKydrashki BydniKydrashki 7 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

API

С этим тегом используют

Программирование IT Python Искусственный интеллект ВКонтакте Нейронные сети Разработка Все
130 постов сначала свежее
24
Web.Study
Web.Study
2 года назад
Web-технологии

4 малоизвестных, но не маловажных API для Javascript⁠⁠

Недавно я копался на хабре и нашел подборку полезных API, которые при этом не мейнстримные. Решил поделиться ими с вами, чтобы вы их юзали на практике (а грех их не заюзать).


Наш канал для новичков во fron-end, где мы рассказываем не только о JS

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Page Visibility API


Данный интерфейс позволяет определять, когда пользователь покидает страницу. Точнее, он вызывает событие при каждом изменении состояния видимости (visibility status) страницы, например, когда пользователь сворачивает/разворачивает окно, переходит на другую вкладку и т.д.


Раньше для этого приходилось прибегать к таким уловкам, как обработка событий blur и focus. Соответствующий код выглядел так:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Приведенный код работает, но не совсем так, как ожидается. Поскольку событие blur вызывается, когда страница теряет фокус, оно может возникнуть, когда пользователь нажимает на поиск, диалоговое окно (alert), консоль или границу окна. События blur и focus сообщают нам о том, что страница активна, но не о том, видим или скрыт ее контент.


Случаи использования


Page Visibility API может использоваться для предотвращения выполнения операций, которые имеют значение, только когда пользователь видит страницу, или для выполнения фоновых операций. Еще несколько кейсов:


• приостановка воспроизведения видео, каруселей изображений (автослайдеров) или анимации, когда пользователь покидает страницу;

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

• отправка аналитических данных о действиях пользователя.


Интерфейс


Page Visibility API предоставляет 2 свойства и одно событие для получения доступа к состоянию видимости страницы:


• document.hidden — доступное только для чтения глобальное свойство. Признано устаревшим. Если страница скрыта, возвращается true, иначе — false;

• document.visibilityState — обновленная версия document.hidden. Возвращает 4 возможных значения:
• visible — страница видима или, если быть точнее, страница не свернута и находится в текущей вкладке;

• hidden — страница скрыта;

• prerender — начальное состояние видимой страницы: предварительный рендеринг;

• unloaded — страница выгружена из памяти;

• visibilitychange — событие объекта document, возникающее при изменении visibilityState:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Пример использования


В качестве примера рассмотрим приостановку видео и прекращение получения ресурсов из API, когда пользователь покидает страницу. Создаем шаблон проекта с помощью Vite и Yarn:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Переходим в созданную директорию, устанавливаем зависимости и запускаем сервер для разработки:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Приложение доступно по адресу http://localhost:3000.


Удаляем шаблонный код из файла main.js и добавляем элемент video в файле index.html:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Возвращаемся к main.js. Добавляем обработчик события visibilitychange объекта document:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Попробуйте свернуть/развернуть окно или переключиться на другую вкладку, чтобы увидеть изменения состояния видимости страницы.


Получаем ссылку на элемент video и управляем воспроизведением видео в зависимости от видимости страницы:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Прим. пер.: приведенный код работать не будет: получаем ошибку Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.. Это объясняется тем, что вызов video.play() при изменении состояния видимости страницы на visible равносилен наличию у элемента video атрибута autoplay. Современные браузеры допускают автоматическое (без участия пользователя) воспроизведение видео только в режиме без звука. Соответственно, для того, чтобы код работал, как ожидается, элементу video необходимо добавить атрибут muted.


Когда пользователь покидает страницу, воспроизведение видео приостанавливается. Когда пользователь возвращается на страницу, воспроизведение видео продолжается.

Теперь рассмотрим пример прекращения выполнения запросов к API. Для этого напишем функцию, запрашивающую цитату из quotable.io. Добавляем в index.html элемент div для хранения цитаты:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Определяем в main.js функцию для получения произвольной цитаты с помощью Fetch API:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Приведенный код работает, но функция getQuote вызывается только один раз. Обернем ее в setInterval с интервалом в 10 секунд:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Если пользователь свернет окно или перейдет на другую вкладку, запросы все равно будут отправляться каждые 10 секунд. Давайте это исправим:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Теперь запросы будут выполняться только при условии, что страница находится в видимом состоянии.


Поддержка — 98.24%.


Web Share API


Web Share API предоставляет разработчикам доступ к встроенному механизму совместного использования (native sharing mechanism) операционной системы, что особенно актуально для мобильных телефонов. Данный интерфейс позволяет делиться текстом, ссылками и файлами без создания собственного механизма или использования сторонних решений.


Случаи использования


Web Share API позволяет делиться содержимым страницы в соцсетях или копировать его в буфер обмена пользователя.


Интерфейс


Web Share API предоставляет 2 метода:


• navigator.canShare(data): принимает данные для совместного использования и возвращает логическое значение — индикатор того, можно ли этими данными поделиться;

• navigator.share(data): возвращает промис, который разрешается в случае успешного шаринга (sharing) данных. Данный метод вызывает нативный механизм и принимает данные для шаринга. Обратите внимание: этот метод может вызываться только в ответ на действие пользователя (нажатие кнопки, переход по ссылке и т.п.) (требуется кратковременная активация). data — это объект со следующими свойствами:

• url — ссылка для шаринга;

• text — текст;

• title — заголовок;

• files — массив объектов File.



Пример использования


Возьмем последний пример и добавим возможность делиться цитатой. Добавляем соответствующую кнопку в index.html:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

В main.js получаем ссылку на эту кнопку и определяем функцию для шаринга данных:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Нам также потребуется глобальная переменная для хранения содержимого текущей цитаты:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Определяем обработчик нажатия кнопки:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Обратите внимание: Web Share API работает только в безопасном окружении. Это означает, что страница должна обслуживаться по протоколу https или wss.


Поддержка — 89.82%.



Broadcast Channel API


Broadcast Channel API позволяет контекстам браузера (browser contexts) обмениваться данными друг с другом. К браузерным контекстам относятся такие элементы, как окно, вкладка, iframe и т.д. По причинам безопасности контексты, обменивающиеся данными, должны принадлежать одному источнику (same origin). Один источник означает одинаковый протокол, домен и порт.


Случаи использования


Broadcast Channel API обычно используется для синхронизации окон и вкладок браузера для улучшения пользовательского опыта или повышения безопасности. Он также может применяться для уведомления одного контекста о завершении процесса в другом контексте. Другие примеры:


• авторизация пользователя во всех вкладках;

• отображение загруженного ресурса во всех вкладках;

• запуск сервис-воркера для выполнения фоновой задачи.


Интерфейс


Broadcast Channel API предоставляет объект BroadcastChannel, позволяющий обмениваться сообщениями с другими контекстами. Конструктор этого объекта принимает единственный аргумент: строку — идентификатор канала (channel identifier):

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

BroadcastChannel предоставляет 2 метода:


• broadcastChannel.postMessage(message): позволяет отправлять сообщения всем подключенным контекстам. В качестве аргумента данный метод принимает любой тип данных:
4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

• broadcastChannel.close(): закрываем канал коммуникации, что позволяет браузеру выполнить сборку мусора.


При получении сообщения возникает событие message. Это событие содержит свойство data с отправленными данными, а также другие свойства, позволяющие идентифицировать отправителя, такие как origin, lastEventId, source и ports:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Пример использования


Возьмем последний пример, создадим новый контекст и добавим возможность обмена цитатами между существующим и новым контекстами.

Создаем директорию new-context в корне проекта. Создаем в ней файл index.html следующего содержания:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Создаем файл new-context/main.js.


Получаем ссылку на div и создаем новый канал коммуникации:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Добавляем обработчик события message:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Создаем канал в основном main.js и редактируем функцию getQuote:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Прим. пер.: для того, чтобы запустить данный пример локально, необходимо сделать следующее:


• в корне проекта создаем файл vite.config.js следующего содержания:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

• запускаем сервер для разработки с помощью команды yarn dev;

• открываем 2 вкладки:
• по адресу http://127.0.0.1:5173/index.html;

• по адресу http://127.0.0.1:5173/new-context/index.html.


Поддержка — 92.3%.



Internationalization API


Шпаргалка по Internationalization API


При разработке приложения иногда требуется переводить его содержимое на другие языки. Однако простого перевода часто оказывается недостаточно, поскольку такие вещи, как даты, числа, единицы измерения и др. могут различаться в разных странах. Неправильный перевод таких вещей может привести к плохому пользовательскому опыту.


Предположим, что мы хотим отобразить на странице "10 ноября 2022 года" как "11/10/22". Эта дата в разных странах будет выглядеть по-разному:


• 11/10/22 или ММ/ДД/ГГ в США;

• 10/11/22 в Европе и Латинской Америке;

• 22/11/10 в Японии, Китае и Канаде.


Здесь на помощь приходит Internationalization API (или I18n). Данный интерфейс позволяет решить несколько групп задач, связанных с интернационализацией и локализацией, но в этой статье мы не будем погружаться в него слишком глубоко.


Интерфейс


Для определения страны пользователя в I18n используется идентификатор локали (или просто локаль) (locale identifier, locale). Локаль — это строка, представляющая страну, регион, диалект и другие характеристики. Если точнее, локаль — это строка, состоящая из подтегов (subtags), разделенных дефисом, например:


• zh — китайский (язык);

• zh-Hant — китайский (язык), традиционные иероглифы (сценарий — script);

• zh-Hang-TW — китайский (язык), традиционные иероглифы (сценарий), используемые на Тайване (регион).


Полный список подтегов можно найти в этом RFC.


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


• Intl.DateTimeFormat — форматирование даты и времени;

• Intl.DisplayNames — форматирование названий языков, регионов и сценариев;

• Intl.Locale — генерация и манипуляция идентификаторами локалей;

• Intl.NumberFormat — форматирование чисел;

• Intl.RelativeTimeFormat — форматирование относительного времени (завтра, 2 дня назад и т.п.).


Пример использования


В качестве примера рассмотрим использование конструктора Intl.DateTimeFormat для форматирование свойства dateAdded цитат. Данный конструктор принимает 2 аргумента: строку locale для определения правил форматирование даты и объект options для кастомизации форматирования.


Прим. пер.: в качестве первого аргумента Intl.DateTimeFormat также принимает массив локалей. Например, для установки дефолтной локали пользователя в конструктор передается пустой массив ([]).


Объект, возвращаемый Intl.DateTimeFormat, предоставляет метод format, который принимает объект Date с датой для форматирования и объект options для кастомизации отображения форматированной даты:

4 малоизвестных, но не маловажных API для Javascript Программирование, IT, Javascript, API, Frontend, Длиннопост

Обратите внимание: мы установили настройку timeZone в значение UTC для того, чтобы при форматировании даты не учитывалось локальное время пользователя.


Определяем в main.js функцию для форматирования даты:

function formatDate(dateString) {
const date = new Date(dateString);
const dateTime = new Intl.DateTimeFormat([], { timeZone: "UTC" });
return dateTime.format(date);
}

Вызываем эту функцию внутри функции getQuote для форматирования свойства dateAdded:

const getQuote = async () => {
if (document.visibilityState !== "visible") return;
try {
// ...
const parsedQuote = `<q>${content}</q> <br> <p>- ${author}</p> <br> <p>Added on ${formatDate(
dateAdded
)}</p>`;
// ...
} catch (e) {
console.error(e); 
}
};

Поддержка — 97.74%.


Прим. пер.: на днях использовал Intl.DateTimeFormat для отображения даты и времени в коротком формате:

const getDateWithHoursAndMinutes = (date) => 
new Intl.DateTimeFormat([], {
dateStyle: "short",
timeStyle: "short",
}).format(date); 
console.log(getDateWithHoursAndMinutes(new Date())); // 23.09.2022, 21:30

Надеюсь, что вы, как и я, узнали что-то новое и не зря потратили время.

Благодарю за внимание и happy coding!

Показать полностью 25
[моё] Программирование IT Javascript API Frontend Длиннопост
3
9
Readluiforwin
Readluiforwin
2 года назад
QA Rules

Что такое web, mobile, api тестирование⁠⁠

Всем привет!

Очень часто можно услышать такие слова как web-тестирование, mobile-тестирование, api-тестирование.

Попробуем разобраться в этом простым языком.


Если говорить кратко, то web-тестирование - это проверка работы функционала на стороне веб-приложения, иначе говоря, что страницы, которые вы видите через браузер корректно отображают данные, которые приходят с сервера, а также логика на странице отрабатывает верно.


Представим, что у нас есть сайт, на котором есть форма, где мы хотим отобразить самого лучше пользователя, а также у нас есть база всех пользователей и сервер, который по своей логике считает самого-лучшего-пользователя и отправляет веб-приложению.


В данном случае в веб-части проверять мы будем именно то, что страница корректно отображает то, что приходит в ответе от сервера

Тут мы плавно переходим к api-тестированию (в нашем случае http-rest)


Целью api-тестирования является проверка логики работы сервера. Что же такое api? Простыми словами - это язык общения сервисов и приложений. Логика здесь такая: чтобы отобразить информацию, которая хранится на сервере, веб-приложение отправляет запрос на этот сервер по определенному пути, конечной точкой которого является эндпоинт (например, https://www.youtube.com/watch?v=dQw4w9WgXcQ, здесь эндпоинтом является /watch). Сервер же, в зависимости от эндпоина выполняет ту или иную функцию, и отдает ответ. Если по запрашиваемому приложением эндпоинту на сервере нет заранее запланированного ответа - вернется код 404 (например, https://www.youtube.com/watch12323).

Каждый ответ сервера можно разделить на условно 3 мажорные части: headers, status, body (но не только из них)

В headers содержаться заголовки ответа, например такой как Content-Type который говорит, какого типа будет содержаться контент в ответе.

В body помещается основная информация, в примере выше это будет самый лучший сотрудник: например, его ник, или имя-фамилия, ссылка на профиль.
В status содержится код ответа, который состоит из 3-х значного числа. По первой цифре которого можно понять что произошло с нашим запросом, всего есть 5 типов кодов, но самыми часто-встречаемыми являются: 2xx - запрос выполнен корректно, 4xx - ошибки на клиенте (например 404 - запрос по эндпоинту, которого не существует на сервере), 5хх - ошибки на сервере, например, при определенной комбинации входящих данных, сервер может вести себя некорректно.

Целью QA в данном случае будет являться проверить что все api ведут себя так, как было описано в спецификации к ним и/или по общепринятым стандартам (например, если api на корректный запрос присылает код 4xx - это некорректное поведение).

То есть отправили запрос с определенный набором параметров - проверили, что ответ соответствует ожиданию.


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

На примере postman, запрос к google.com/ будет выглядеть так

Что такое web, mobile, api тестирование IT, Программирование, Полезное, Обучение, QA, Тестирование, Тестирование по, Мобильное тестирование, API, Длиннопост
Показать полностью 1
[моё] IT Программирование Полезное Обучение QA Тестирование Тестирование по Мобильное тестирование API Длиннопост
0
sbis.tensor
sbis.tensor
2 года назад

Как мы роботизировали документооборот ВкусВилла⁠⁠

Как мы роботизировали документооборот ВкусВилла Бизнес, Торговля, Программирование, Малый бизнес, Российское производство, Сбис, ЭДО, Электронная подпись, API, 1С

ВкусВилл — бренд полезных продуктов для здорового питания, сеть магазинов и сервис бесплатной доставки.

В цифрах ВВ — это:

● 29 760 сотрудников

● Более 1500 поставщиков

● 1300+ магазинов и 120 + дарксторов по всей России

Какие задачи решали

ВкусВилл ведет учет в 1C, а внутренний документооборот — в Synerdocs. Когда Synerdocs ушел с рынка, ВкусВиллу потребовалось срочно найти аналогичное решение. Обратились в Тензор. И в кратчайшие сроки наши инженеры не только внедрили ЭДО, но и роботизировали его — фактически разработали в СБИС модифицированную RPA-технологию.

Что такое роботизация и как мы это сделали

У ВкусВилла большие объемы внутренних документов — 30 000 в сутки, и их количество будет только расти. Большой объем документов — это внутреннее перемещение товаров между складами и магазинами. И 14 000 подписантов-сотрудников, ответственных за перемещения. Они должны подписывать накладную, когда товар, например, с одного склада перевозится в магазин. Но при таких объемах сложно контролировать весь процесс.


Выход был найден — роботизировать подписание документов, т.е. сделать так, чтобы вместо сотрудника подписание выполнял робот. Такая схема юридически законна и для системы действия робота ничем не отличаются от действий человека. Конечно, сотрудник дает письменное согласие на подписание документов от его лица и без его участия. Сам он не имеет доступа в систему. Бизнес-процесс выглядит так:


1. Отправитель формирует форму с необходимыми подписантами в 1С. Далее они поступают в СБИС по API.

2. Робот в цикле делает все сам: методами API создает документ и выполняет подписание за сотрудников.

3. Затем полностью подписанный документ со штампом ЭП выгружается в 1С и перемещается в архив.


Т.е. мы прописали робота-исполнителя команд «загрузи — подпиши одним сотрудником — подпиши другим — выгрузи». Для скорости обработки документов отправитель в 1С запускает сразу несколько очередей запросов параллельно. Такая схема позволяет вносить изменения в автоматизированные бизнес-процессы и добавлять новые в кратчайшие сроки.

Итоги и цифры

● Реализовали подписание 30 000 документов в сутки.

● Клиент использует НЭП вместо ПЭП — это дает большую юридическую защиту.

● Выполнили все работы за 1,5 месяца. Точно уложились в сроки по договору.

Показать полностью
[моё] Бизнес Торговля Программирование Малый бизнес Российское производство Сбис ЭДО Электронная подпись API 1С
9
11
eaborovkov
eaborovkov
2 года назад
IT News

Война Meta* против поставщиков серого API WhatsApp. Или что делать, если вы хотели перехитрить корпорацию⁠⁠

Спустя три года после выхода WABA (WhatsApp Business Api), разработчикам серых API начали прилетать иски и угрозы. Разбираемся что делать, если у вас есть действующий WhatsApp бот или вы поставщик серого API для WhatsApp. Инсайдерская информация, советы и прогнозы на будущее.

Война Meta* против поставщиков серого API WhatsApp. Или что делать, если вы хотели перехитрить корпорацию WhatsApp, API, Чат-бот, Бизнес, Интеграция, Viber, Telegram, Facebook, ВКонтакте, Meta, Длиннопост

Предыстория


WhatsApp появился в 2009 году. Белое официальное API (WABA) для него вышло только в 2018. И очевидно, что почти 10 лет миллионная аудитория мессенджера не могла оставаться без внимания. Предприниматели хотели взаимодействовать со своими клиентами в том мессенджере, который всем привычен.


Так появились поставщики серого API для WhatsApp.


Не смотря на то, что они хорошо работали (и зарабатывали) вплоть до 2022 года, в Facebook* (ныне Meta*) не сильно переживали про их существование. Иногда, со стороны Meta* были какие-то письма и попытки запугать серых разработчиков. Но, в большинстве своем, эти угрозы ничем не заканчивались. До суда не доходило.


В 2019 году, с выходом белого API, в сторону WhatsApp посмотрели и крупные компании, которые до этого неохотно шли на сотрудничество с серыми решениями. Meta* брала деньги за каждое отправленное сообщение и по началу продавала только крупным покупателям с большими чеками. К 2022 году цены снизились, условия упростились, появилось больше партнеров и, наконец, даже небольшие компании могут себе позволить подключиться к WABA.

Рынок поменялся, но не полностью


В какой-то момент, в 2022 году, Meta* наконец решила давить серых поставщиков. То ли пришло осознание, что серое API до сих пор дешевле (там нет оплаты за каждое сообщение), то ли просто решили остаться единственными на этом поприще — не известно.


Факт остается фактом. В начале 2022 года, компаниям поставщикам серого API опять начали приходить письма от Meta*. Там были не абстрактные обещания обратиться в суд, а уже весьма конкретные повестки. Многие даже выходили на диалог с юристами Meta*, где объяснялось, что-то в стиле “мы все равно вас задавим, поэтому лучше по-хорошему отползите в сторону”.


Мы, в Botcreators занимаемся разработкой чат-ботов уже более 4 лет. И, в какой-то момент, к нам обратился клиент, который хотел чат-бота для WhatsApp. В поисках способов закрыть ему задачу, мы познакомились с Никитой К. Именно он и поделился своим взглядом на эти события.

Никита на тот момент был одним из сооснователей одного из крупнейших поставщиков серого API для WhatsApp. Полностью его имя и компанию мы не называем по просьбе самого Никиты.

Далее слова Никиты:


Мы начали делать наше API в 2015 году, когда про WABA (WhatsApp Business Api) и близко не было речи. Ее (WABA) презентовали в 2018 году. А более-менее доступной она стала в 2020.
Долгое время мы держались среди лидеров подобных решений благодаря широкой функциональности нашей реализации. С Facebook* мы долго не пересекались.
Далее, в 2021 году, мы получили письмо с претензиями от юристов головного офиса уже компании Meta*. После общения с юристами, мы поняли, нам нужно переходить на WABA, а в самом плохом случае за вменяемый нам Copyright Infringement в США даже может грозить реальный срок до 5 лет.
Мы любили наш продукт, но выбора нам не оставили. Никакие условия и детали переговоров я не могу озвучивать. Но обернуться могло все сильно хуже. Нам оставили единственный выход: переход на WABA.
Какие выводы я могу сделать сейчас? Во-первых, Meta* основательно берется за этот растущий рынок. И сейчас все серые игроки на мушке. Нам точно известно, что списки серых провайдеров у них есть. Во-вторых, есть компании, которые за лояльность Meta* готовы приносить им информацию о неофициальных провайдерах. В-третьих, советую всем читать все обновления правил пользования WhatsApp и законодательство в области Copyright infringement, потому что многим кажется, что они ничего не нарушают.
Технически, неофициальное API может существовать дальше, но только в условии реально серого бизнеса, но Meta* будет давить юридически и технически. И я не уверен, что игра с такой корпорацией стоит свеч.

Конец цитаты.

Почему выбирали и выбирают WhatsApp, а не Telegram, VK или Viber?


Все просто: в WhatsApp можно чтобы бот “писал первым”. С этим есть куча нюансов в виде блокировок номера, ограничение на количество отправляемых сообщений и т.д. Но “ключевая особенность” именно в холодной рассылке.


В Viber тоже можно писать первым. Но это будет бизнес аккаунт, сообщения от которого будут лежать в отдельной вкладке. С этим имеет смысл заморачиваться только представителям крупных брендов. Ибо надо проходить согласования и заполнять информацию о компании. Небольшие предприятия или не хотят заморачиваться, или ждать модерации.


В Telegram такая возможность появилась сравнительно недавно. И то, совсем “в холодную” чат-боты писать по прежнему не могут (надеюсь и не смогут). Чтобы бот написал якобы первым, надо, чтобы пользователь подписался на канал и как бы одновременно фоном стартанул бота (а то и не одного). А бот сразу удалил сообщение о старте и пропал в списке чатов, чтобы у пользователя в будущем сложилось ощущение, что бот ему пишет “в холодную”. И я сейчас не говорю про холодную рассылку с помощью Telegram API. Я про Telegram Bot API. Кому интересно подробнее, у нас была статья на эту тему.


Про VK, думаю, пояснять не надо. Чтобы бот мог тебе что-либо прислать, ты должен или на группу подписаться или сам начать с ним диалог. Исключение, разве что, только всякие hh.ru или Cdek, которые шлют уведомление в VK даже если ты на них не подписывался. У них договоры с VK.


Вот и получается, что когда вы сходили в салон красоты, то просьба об оценке визита вам приходит именно в WhatsApp. А не в Viber или Telegram или VK. При том, что записывались вы не через WhatsApp.

Будущее Meta* и WhatsApp Business API


В период с 2009 по 2022 год многие себе успели заказать чат-ботов для WhatsApp, либо слепить их на конструкторах. Если вы из их числа, то вот, что вам надо понять или выяснить:


- Как работает ваша интеграция? Через серое API или через белое? Спросите вашего поставщика услуг или коллег, кто этим занимался.


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


- Скоро не останется серых поставщиков. Даже в условиях нашего рынка. Хотя бы потому, что им закроют техническую возможность поддерживать свои продукты. Ну или потому, что в Meta* очень плотно следят за всеми, кто пытается создать что-либо на базе их продуктов. И это инсайд, а не конспирология. Думать, что именно про вас в Meta* еще не слышали — большое заблуждение. Бояться их? Решать вам.


- Если вы собираетесь заказать себе WhatsApp бота, то внимательно смотрите, что вам предлагают. Цены на белое API очень разные у разных поставщиков. Публиковать я их тут не буду. Из понятных метрик скажу лишь, что у белого API не бывает бесплатной отправки сообщений. Они тарифицируют каждое отправленное сообщение.


Если вам предлагают сделать бота на WABA, то просите документы, подтверждающие, что они действительно используют WABA, а не делают вид, что используют.


Кстати, за 2021 и 2022 год цены на WABA снижаются. Рынок уплотняется и сама Meta* тоже снижает планку для провайдеров. Глядишь, к 2024 году цены будут адекватными и для микро бизнеса.

*Meta (ранее Facebook) запрещенная в РФ организация.

А еще у нас есть канал про чат-ботов https://t.me/botcreatorsru

Показать полностью 1
[моё] WhatsApp API Чат-бот Бизнес Интеграция Viber Telegram Facebook ВКонтакте Meta Длиннопост
3
zavlast
zavlast
2 года назад

Сила пикабу!⁠⁠

Ребят, помогите пожалуйста с ключом API GOOGLE translation, у меня сайт отслеживания грузит через api забугорного сайта на английском языке, а в модуле можно динамически переводить но только через google. В день максимум запросов 30. Российские карты не принимает билинг.
Без рейтинга.

[моё] API Google Санкции Без рейтинга Помощь Текст
2
552
Immortalique
Immortalique
2 года назад
Типичный программист

Хэй, Джейсон!⁠⁠

Хэй, Джейсон! Программирование, Json, IT юмор, Программист, AJAX, API, Юмор, Джейсон Вурхис, Картинка с текстом
Показать полностью 1
[моё] Программирование Json IT юмор Программист AJAX API Юмор Джейсон Вурхис Картинка с текстом
13
219
artyhedgehog
artyhedgehog
2 года назад
IT-юмор

Ответ на пост «Плохой API»⁠⁠1

Так... В общем, насколько моего понимания хватает, вкратце это разница между REST и JSON RPC.


Первый по-максимуму использует методы и коды ответа протокола HTTP в том числе для передачи информации логики API.


Второй чётко отделяет слой HTTP и слой логики API. HTTP только чтобы передать запрос-ответ. Инфа про запрос, в том числе тип операции - только в теле запроса. Инфа про ответ, в том числе код результата выполнения операции - только в теле ответа.


И то, и другое - валидные протоколы API, более или менее подходящие под разные задачи. Главное не натягивать мухи на котлеты.


Всё, зануда мод пошёл отдыхать.

Ответ на пост «Плохой API» IT юмор, Http, API, Программист, Программирование, IT, Ответ на пост, Текст
[моё] IT юмор Http API Программист Программирование IT Ответ на пост Текст
53
1938
DELETED
2 года назад
IT-юмор

Плохой API⁠⁠1

… или когда не знаешь зачем нужны коды состояния HTTP

Плохой API IT юмор, Http, API, Программист, Программирование, Картинка с текстом
IT юмор Http API Программист Программирование Картинка с текстом
199
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии