Topic: даделать смс

Дмитрий прошу вас помочь даделать обработку ответа от смс сервиса

суть вот в чем... есть готовая обработка ответов от Epochta

     if w = 'epochta' then  begin
     while true do
     begin
         iPos1 := PosEx('<RESPONSE>', sl.Text, iOffset);
         if iPos1=0 then break;

         iPos2 := PosEx('</RESPONSE>', sl.Text, iOffset);
         iOffset := iPos2+1;

         sRow := Copy(sl.Text, iPos1, iPos2-iPos1);

        sstatus := Copy(sRow, Pos('<status>', sRow)+Length('<status>') , Pos('</status>', sRow)-Pos('<status>', sRow)-Length('<status>'));
    end;
      if sstatus= '-1' then ShowMessage('Неправильный логин и/или пароль') else
      if sstatus= '-2' then ShowMessage('Неправильный формат XML') else
      if sstatus= '-3' then ShowMessage('Недостаточно кредитов на аккаунте пользователя ') else
      if sstatus= '-4' then ShowMessage('Нет верных номеров получателей') else
      if sstatus= '-5' then ShowMessage('Неверный текст') else
      if sstatus= '-7' then ShowMessage('Ошибка в имени отправителя ') else
      if sstatus= '1'  then ShowMessage('Сообщение принято!') else
      if not ping('http://api.myatompark.com')then ShowMessage('Ошибка подключения ');
    end;

я хотел что бы ответы от turbosms и Clickatel обабатывались в подобном варианте, так можно настроить бальше возможностей в программе в зависимости от ответа

проект прикладываю  процедура обработки ответа строчки 159-204

Post's attachments

Attachment icon 11111112.7z 9.51 kb, 278 downloads since 2018-12-28 

Re: даделать смс

у меня как всегда, родилася глупая мысль!
что если добавить  TurboSmsUa.CodeSendSMS  ClickatellCom.CodeSendSMS которые будут возвращать код ответа
тоесть если кому не нужен код, может использовать TurboSmsUa.SendSMS  ClickatellCom.SendSMS
а если нужно как-то обрабатывать ответ, то CodeSendSMS ...

Re: даделать смс

К сожалению я не могу полностью понять описанную вами проблему, пожалуйста опишите подробней, к сожалению я не помню всех ньюансов использования СМС сообщений.

Dmitry.

Re: даделать смс

DriveSoft wrote:

К сожалению я не могу полностью понять описанную вами проблему, пожалуйста опишите подробней, к сожалению я не помню всех ньюансов использования СМС сообщений.

TurboSmsUa.SendSMS и  ClickatellCom.SendSMS возвращает нам (готовый) ответ.
в какой-то теме я уже писал, что в конце возвращаемого ответа пользователю есть лишние знаки (пробел) и (переход на новую строку)
в частноти при ответе пользователю от turbosms ("Не достаточно параметров для выполнения функции") есть два лишних символа
другие ответы не проверял.
вот я и подумал... что тем кто собирается не просто выводить пользователю ответы но и стрить на них логику
проще сделать TurboSmsUa.CodeSendSMS (тоже самое, что TurboSmsUa.SendSMS) только в ответе не текст а 1,2,3,4,5,6,7 где:
   ПРИМЕР:
    1- Неправильный логин и/или пароль
    2- Неправильный формат XML
    3- Недостаточно кредитов на аккаунте пользователя
    4- Нет верных номеров получателей
    5- Неверный текст
    6- Ошибка в имени отправителя
    7- Сообщение принято!

Re: даделать смс

К сожалению я не могу изменить API сервиса, если сервис возвращает только  текст ошибки без кода ошибки, то мало, что тут можно сделать, кроме как строить логику на тексте ответа, т.е. просто ищем вхождение фразы в строку, при этом какие либо дополнительные пробелы или знаки мешать не будут, пример:

    sResult := ClickatellCom.SendSMS;
    
    if Pos('Не достаточно параметров для выполнения функции', sResult)>0 then
    begin
    
    end else
    if Pos('Неправильный формат XML', sResult)>0 then
    begin
    
    end else
    begin
        // если ответ не распознан
    end;
Dmitry.