MSL: mExtractExternalWebLinkFromMessage, получить внешний http(s) линк на файл в сообщении

MSL: mExtractExternalWebLinkFromMessage, получить внешний http(s) линк на файл в сообщении

"Для разработчиков", "Серверные скрипты", "Описание функций", "Сообщения", "mExtractExternalWebLinkFromMessage".

 

Получить внешнюю http(s) ссылку на файл или изображение из сообщения, которые потом можно будет открыть или скачать в браузере.

 

Синтаксис

function mExtractExternalWebLinkFromMessage(const sMsg: string; const iMsgType: integer): string;

 

Параметры и возвращаемые значения

Параметр

Тип

Значение

sMsg

string

тело сообщения;

iMsgType

integer

тип сообщения.

 

Результат функции

Если тип сообщения — MSG_TYPE_IMAGE или MSG_TYPE_FILE, то функция вернёт http/https ссылку, если нет — то пустую строку.

 

Пример

Отправка сообщения Telegram-боту, если получатель приватного сообщения не в сети. Пример из интеграции MyChat и Telegram. Если тип сообщения — файл или картинка, а не текст, то боту отправляется ссылка на файл/изображение. В ссылке указан внешний (белый) адрес WEB-сервера MyChat, поэтому Telegram сможет скачать файл и отправить его в чат человеку, который подписан на сообщения бота.

function OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
var
  sID, sOutMsg, sNameFrom, s: string;
  bResult: boolean;
begin
  SetScriptTimeOut(10000);

  result := true;

    if not mIsUINOnline(iUINTo) then begin
      // get sender's Telegram ID
      sID := mIntegrationTelegramGetUserIDByUIN(iUINTo);

        if sID[1] <> '-' then begin // no errors
          // get MyChat sender's display name
          sNameFrom := mGetUserFullNameByPreset(iUIN, 0);

		  if (iMsgType = 2) or (iMsgType = 23) then
  		    sOutMsg := mExtractExternalWebLinkFromMessage(sMsg, iMsgType)
          else
            // convert MyChat message to plaint text
            sOutMsg := mConvertMsgToPlainText(sMsg, iMsgType);

          // add WEB support link and user display name to message
          sOutMsg := '' +
                     sNameFrom +
                     ':' +
                     CRLF +
                     CRLF +
                     sOutMsg;

          // send message to Telegram
          s := mIntegrationTelegramSendMessage(sID, sOutMsg, 5000);
          bResult := true;

            if JSONGetBoolean(s, 'ok', bResult) <> 0 then bResult := false;

            // if any error occured - log result to server's system scripts protocol
            if not bResult then begin
              s := 'From: ' + IntToStr(iUIN) + ', to: ' + IntToStr(iUINTo) + CRLF + s;
              mLogScriptToDisk(s);
            end;  
        end;
    end;
end;

begin

end.

 

Ещё посмотреть

Обработка событий MyChat Server

Типы сообщений MyChat