Вам нужно включить скрипт в разделе onRequestByRest-Telegram, если оно не включено, а в телеграмме нажмите на последнее сообщение от бота и выберите "ответить", тогда чат сможет понять, кому предназначено сообщение.
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.
Но сообщения проходят только в сторону Телеграмма, обратно (ответ ) не проходит.
Пользуйтесь тегом code для выделения исходных текстов, чтобы их можно было нормально читать.
Скрипт неполный. Вы используете версию 8.0.3 ?
Текущий скрипт выглядит вот так:
// -----------------------------------------------------------------------------------
// 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.
Чат со мной
Да: версия 8.0.3
Я отделил ваши сообщения от первоначальной темы. Пожалуйста, отделяйте любой свой вопрос в отдельную тему.
Пользуйтесь тегом code для выделения исходных текстов, чтобы их можно было нормально читать.
Скрипт неполный. Вы используете версию 8.0.3 ?
Вложения
Чат со мной
Здравствуйте. Уберите последний параметр true из функции mSendPrivateMessage, сохраните и включите скрипт.
Чат со мной
Чат со мной
Чат со мной
Вложения
У вас сертификат просрочен, обновите.
В ошибке от телеграма как раз написано, что сертификат не удалось верифицировать.
Создайте НОВУЮ тему с вашим вопросом и подробнее опишите, что вы сделали, желательно со скриншотами.