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.
Ещё посмотреть