Поскольку , эта тема вроде нигде не поднималась , опишу свой опыт , может быть будет кому то полезно.
Для информирования и контроля за работой торгового привода у меня был поднят небольшой саит на локальном компе с QUIK ,и меня все устраивало,
Сейчас эта схема практически утратила смысл из за почти постоянного отключения мобильного интернета. Я решил посмотреть , что можно использовать взамен. Нормально работали только саиты из белого списка и MAX. Поскольку других вариантов не было , выбор пал на MAX ,
И так , что же мог предложить MAX для решения этой задачи ? В MAX можно создавать чат боты , но делать это могут только OOO ,ИП и самозанятые.
Я давно имею статус самозанятого , а для тех кто его не имеет , получить его можно онлаин за 5 минут и этот статус ни к чему не обязывает.
Для самозанятых MAx ставит ограничение в 2 чат бота. Мне хватило 1 бота, и 1 канала.
Я зашел в лк MAX ( ) как самозанятый и зарегил бота , создал там же канал. Далее чат бота я сделал администратором канала.
В чат чат- бота я направил информационные сообщения от робота а в канале закрепил набор кнопок для отправки управляющих команд для торгового привода. Правда пришлось помучиться с вычислением идентификаторов каналов chat_id. Проще всего это сделать запустив web версию и взять эти id из URL (у чат бота это положительное число в конце URL , а у канала отрицательное).
Привожу пример отправки сообщения в чат бот Max.
Для отправки HTTP сообщения я использовал c библиотеку luacom.dll +WinHttp.WinHttpRequest.5.1, но есть и много других способов (напимер curl)
Для информирования и контроля за работой торгового привода у меня был поднят небольшой саит на локальном компе с QUIK ,и меня все устраивало,
Сейчас эта схема практически утратила смысл из за почти постоянного отключения мобильного интернета. Я решил посмотреть , что можно использовать взамен. Нормально работали только саиты из белого списка и MAX. Поскольку других вариантов не было , выбор пал на MAX ,
И так , что же мог предложить MAX для решения этой задачи ? В MAX можно создавать чат боты , но делать это могут только OOO ,ИП и самозанятые.
Я давно имею статус самозанятого , а для тех кто его не имеет , получить его можно онлаин за 5 минут и этот статус ни к чему не обязывает.
Для самозанятых MAx ставит ограничение в 2 чат бота. Мне хватило 1 бота, и 1 канала.
Я зашел в лк MAX ( ) как самозанятый и зарегил бота , создал там же канал. Далее чат бота я сделал администратором канала.
В чат чат- бота я направил информационные сообщения от робота а в канале закрепил набор кнопок для отправки управляющих команд для торгового привода. Правда пришлось помучиться с вычислением идентификаторов каналов chat_id. Проще всего это сделать запустив web версию и взять эти id из URL (у чат бота это положительное число в конце URL , а у канала отрицательное).
Привожу пример отправки сообщения в чат бот Max.
Для отправки HTTP сообщения я использовал c библиотеку luacom.dll +WinHttp.WinHttpRequest.5.1, но есть и много других способов (напимер curl)
| Код |
|---|
-----------------------------------
function send_max(msg,chat_id,access_token,nFormat)
-----------------------------------
---грузим luacom
luacom = require("luacom")
--для формата markdown
-- # Формат markdown \n **жирный**, _курсив_, ~~зачёркнутый~~, ++подчёркнутый++, `моноширинный` , ^^Выделенный^^ , [Документация](https://dev.max.ru/)
local url,status,responseText,cUser,body,cFormat,http
--chat_id =117.......474
--access_token = "f9LHodD0cOIq...................0BhMw0gm_6f1-DBY"
if not nFormat then
nFormat=0
end
---выбор формата разметки
if nFormat==0 then
--без формата
cFormat=''
elseif nFormat==1 then
--HTML
cFormat= ',"format": "html"'
elseif nFormat==2 then
--markdown
cFormat= ',"format": "markdown"'
end
-- URL
url = "https://platform-api2.max.ru/messages?" .. "chat_id=" .. chat_id
--Тело запроса (JSON)
body ='{"text":"' .. msg .. '"'..cFormat..'}'
-- Создаём COM-объект
http = luacom.CreateObject("WinHttp.WinHttpRequest.5.1")
if http then
-- Открываем соединение (синхронно)
http:Open("POST", url, false)
-- Заголовки
http:SetRequestHeader("Authorization", access_token)
http:SetRequestHeader("Content-Type", "application/json")
http:SetRequestHeader("Accept","application/json")
--Отправляем
http:Send(body)
--Получаем ответ
status = http.Status
responseText = http.ResponseText
if http.Status==200 then
---ok
else
message("Status: " .. tostring(status), 3)
message("Response: " .. tostring(responseText), 3)
end
-- Освобождаем объект
http = nil
else
message("Не удалось создать WinHttp.WinHttpRequest.5.1", 3)
end
end |