Пт мар 23, 2018 10:40 pm Пт мар 23, 2018 10:40 pm
Все ж хочется иметь возможность ответа из телеграмм отвечать в MyChat.
// -----------------------------------------------------------------------------------
// ver 1.1 / Sep 22, 2017, (c) Alexey Pikurov, [email protected]
// -----------------------------------------------------------------------------------
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);
// convert MyChat message to plaint text
sOutMsg := mConvertMsgToPlainText(sMsg, iMsgType);
// add WEB support link and user display name to message
sOutMsg := '<a href="' +
mGetServerExternalAddress(0) +
'/support/?uin=' +
IntToStr(iUIN) +
'&silent">' +
sNameFrom +
'</a>:' +
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 mLogScriptToDisk(s);
end;
end;
end;
begin
end.
// -----------------------------------------------------------------------------------
// 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.
Принято, спасибо. Будем ждать.
Ильнур, здравствуйте. Для подключения мобильных кл[…]
Версия обновлена. Вы обновили свой сервер? Проблем[…]
Мы доделали обработку ссылок на локальные ресурсы.[…]
Сделали ещё исправления . Свежая сборка будет на […]
Изменили логику отображения длительности отсутст[…]
MyChat Client [*] (24.04.2024) (android) (io[…]
Это формируете вы, система контроля рабочего време[…]
К сожалению проблема не решена, вы можете отключит[…]
Подскажите, в версии 3.3 починили эту проблему? А […]
Георгий дал вам ссылку на справку, расположенную н[…]
Здравствуйте. 1. Откройте описание ошибки в спра[…]