Здесь вы можете задать любые вопросы по MyChat, по работе программы, её настройке, лицензированию и т.д.
Аватара пользователя
Oper99
Прикрутил интеграцию к телеграм. Если пользователь недоступен в майчат, все отлично - сообщение приходит в телеграм.
Ответить на это сообщение не получается никак.
Прикладываю видео с экрана телефона
https://photos.app.goo.gl/YbHdz7iKgKhj2ya1A

Меню ответить такого как в видеоинструкции к интеграции нету. :-(
Аватара пользователя
Георгий Лысенко
Здравствуйте!
В инструкции нет такого пункта потому, что она была записана из Android-приложения. В iOS можно отвечать на сообщение как вы, длинным тапом на сообщении или просто свайпом влево.

Покажите содержимое скрипта "OnRequestByREST" -> "Telegram" в админке.

И уточните, какая у вас версия сервера?
Аватара пользователя
Oper99
// -----------------------------------------------------------------------------------
// ver 1.0 / Jun 9, 2017, (c) Alexey Pikurov, [email protected]
// -----------------------------------------------------------------------------------

function OnRequestByREST(sBody, sParams, sHeaders, sURL, sIPv4, sIPv6: string; iType: integer): string;
var
sFirstName, sLastName, sNickName, sTelegramID, sText: string;
begin
sFirstName := '';
sLastName := '';
sNickName := '';
sTelegramID := '';
sText := '';

JSONGetString(sBody, 'message.from.id', sTelegramID);
JSONGetString(sBody, 'message.from.first_name', sFirstName);
JSONGetString(sBody, 'message.from.last_name', sLastName);
JSONGetString(sBody, 'message.from.username', sNickName);
JSONGetString(sBody, 'message.text', sText);

if LowerCase(sText) = '/start' then
mIntegrationTelegramAddUser(sTelegramID, sFirstName, sLastName, sNickName);
end;

begin

end.



Версия счастливая 7.0.0.666
Аватара пользователя
Георгий Лысенко
Оказалось, что у вас неправильный скрипт. Исправим информацию в статье.
Замените существующий скрипт этим:
Код: Выделить всё
// -----------------------------------------------------------------------------------
// ver 2.0 / Aug 10, 2017, (c) Alexey Pikurov, [email protected]
// -----------------------------------------------------------------------------------

function OnRequestByREST(sBody, sParams, sHeaders, sURL, sIPv4, sIPv6: string; iType: integer): string;
var
  sFirstName, sLastName, sNickName, sTelegramID, sText, sData: string;
  iResult, x, iUIN, iUINFrom: integer;
begin
  sFirstName  := '';
  sLastName   := '';
  sNickName   := '';
  sTelegramID := '';
  sText       := '';

  // get request data
  JSONGetString(sBody, 'message.from.id', sTelegramID);
  JSONGetString(sBody, 'message.from.first_name', sFirstName);
  JSONGetString(sBody, 'message.from.last_name', sLastName);
  JSONGetString(sBody, 'message.from.username', sNickName);
  JSONGetString(sBody, 'message.text', sText);

    // if user is connecting to the Telegram bot for the first time
    if LowerCase(sText) = '/start' then mIntegrationTelegramAddUser(sTelegramID, sFirstName, sLastName, sNickName)
      else begin // maybe user send reply message to the bot
        iResult := JSONGetString(sBody, 'message.reply_to_message.entities[0].url', sData);
       
          if iResult = 0 then begin
            // get receiver's UIN
            x := pos('?uin=', sData) + 5;
            iUIN := StrToIntDef(copy(sData, x, pos('&', sData) - x), -1);
           
            // get sender's UIN by user Telegram ID
            iUINFrom := mIntegrationTelegramGetMyChatUINByTelegramID(sTelegramID);

              // if sender and receiver are exists
              if (iUIN <> -1) and (iUINFrom > 0) then begin
                // multi-line text
                sData := '[Telegram] ' + ReplaceString(sText, #10, CRLF, true, false);
                // send private message into MyChat
                mSendPrivateMessage(iUINFrom, iUIN, sData, 1, true);
              end; 
          end;
     
      end;
     
  result := '{}';
end;

begin

end.
Аватара пользователя
Oper99
Все отлично. Заработало. Спасибо
Аватара пользователя
Алексей Пикуров
И вам спасибо, подправили статью и Георгий добавил ссылку на текст скрипта.