Чт дек 20, 2018 10:16 pm Чт дек 20, 2018 10:16 pm
- при наличии интеграции с Telegram и текстового сообщения (вложения пока нет возможности передать) сообщение передается в Telegram
- При наличии почты и offline (чтобы не надоедать) отправка идет на емайл
Дополнено формирование html при наличии у отправителя емайла представление пользователя кликабельной ссылкой для быстрого ответа.
// -----------------------------------------------------------------------------------
// ver 1.1 / Sep 22, 2017, (c) Alexey Pikurov, [email protected]
// ver 1.2 / Dec 20, 2018, (c) Alexandr
// -----------------------------------------------------------------------------------
function IsTextMessageType( iMsgType: integer): boolean;
begin
result := false;
case iMsgType of
0: result := true;
1: result := true;
5: result := true;
10: result := true;
11: result := true;
15: result := true;
16: result := true;
21: result := true;
end;
end;
function OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
var
sID, sOutMsg, sNameFrom, s, sEmailTo, sEmailFrom, sTextBody, sTextFrom, sTextSubject: string;
bResult, bSendMessage, bNotOnline: boolean;
iState: integer;
begin
result := true;
bNotOnline := not mIsUINOnline(iUINTo);
bSendMessage := bNotOnline;
if not bSendMessage then begin
iState := mGetUserState(iUINTo);
if iState = 1 then begin
bSendMessage := true;
end;
end;
if bSendMessage then begin
// get sender's Telegram ID
sID := mIntegrationTelegramGetUserIDByUIN(iUINTo);
sEmailTo := mGetUserPrimaryEmail(iUINTo);
sEmailFrom := mGetUserPrimaryEmail(iUIN);
sNameFrom := mGetUserFullNameByPreset(iUIN, 0);
//Если тип сообщения строка и сотрудник подключен к боту Telegram
//то отправка будет через Telegram (файлы все равно на телеграм не попадают смысл их передавать)
//Иначе если не в онлайне отправка на емайл
if (sID[1] <> '-') and (IsTextMessageType(iMsgType) = true) then begin // no errors
// 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
else if (length(sEmailTo) > 0) and (bNotOnline) then begin
sTextSubject := 'Сообщение от '+sNameFrom + ' ' + FormatDateTime('[dd.mm.yyyy hh:nn:ss]', Now);
if (length(sEmailFrom) > 0) then begin
sTextFrom := '<a href="mailto:'+sEmailFrom+'">'+sNameFrom+'</a>';
end
else begin
sTextFrom := sNameFrom;
end;
sTextBody := '<span style="color:green">' +
FormatDateTime('[dd.mm.yyyy hh:nn:ss]', Now) +
'</span>' +
' '+
'<span style="color:blue"><b>' +
sTextFrom +
'</b></span>'+
'> ';
if (IsTextMessageType(iMsgType) = true) then begin
sTextBody := sTextBody + CRLF + ReplaceString(mConvertMsgToPlainText(sMsg, iMsgType), CRLF, '</br>', true, false);
end
else begin
sTextBody := sTextBody + 'Вам был отправлен файл, но к большому сожалению функция передачи файла по емайлу еще не реализованна'+CRLF+'</br>';
end;
mSendEmail(sEmailTo, sTextSubject, sTextBody, 1, '');
end;
end;
end;
begin
end.