Перейти к содержимому


СМС рассылка пишет лог только после доставки?


Сообщений в теме: 17

#1 d654525

    Активный участник

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 15 Февраль 2017 - 15:47

Мне нужно настроить автоматическую отправку СМС при поступлении заявки.
Сделал через отправку по фильтру "Новые, которые в поле "Рассылки" не содержат слова "СМС", т.к. шаблон называется "СМС приветствие". Отправка смс каждую минуту, рассылка по фильтру каждый 5 минут. Думал, что успеет отправиться и в лог рассылки прописать слово "СМС", но оказывается в лог рассылки пишется только при получении статуса сообщения DELIVERED или UNDELIVERED. А в случае задержки на стороне смс шлюза скрипт повторно отправляет, т.к. в логе ничего нет. Как быть?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Февраль 2017 - 16:30

2 варианта:
1. Если sms отправляется пользователю программы, то лучше делать это через напоминание с отправкой sms.
2. Если не пользователю, то есть еще вариант отправки sms через вычисление (пользователю тоже так можно).

Рассылка по фильтру немного для других целей, а именно для массовых рассылок, например раз в сутки, а не для персональных извещений каждые 5 минут.

#3 d654525

    Активный участник

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 15 Февраль 2017 - 16:51

где посмотреть примеры вычислений? на форуме по слову смс не находится.

это странно, ведь полностью все оформление такое же, как и для email рассылки. в справке также не нашел информации.

Сообщение отредактировал d654525: 15 Февраль 2017 - 16:53


#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Февраль 2017 - 17:43

sendsms(текст, кому);

На форуме да, примеров именно по sendsms не находится, но полно по sendmail (отправка письма), а логика в принципе та же, вы правы.

#5 d654525

    Активный участник

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 15 Февраль 2017 - 18:13

простите, но я не нашел подходящего вычисления. написать самому сложно будет с нуля. прошу помочь!

мне нужно отправлять смс шаблон с названием "СМС-Авто сообщение - Заявка принята" автоматически при добавлении новой записи через внешнюю форму. новая запись имеет значение "Новая" в поле f3761.
в текст подставляется имя получателя из поля f3711

Сообщение отредактировал d654525: 15 Февраль 2017 - 18:14


#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Февраль 2017 - 11:16

Так я же дал уже вам код функции, что еще тут сложного то? Подставляете нужные значения и условие:

if ($line['f3761'] == "Новая") {
    sendsms("СМС-Авто сообщение - Заявка принята", $line['f3711']);
}

Простейшее вычисление.

#7 d654525

    Активный участник

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 16 Февраль 2017 - 11:39

к сожалению, я только опытным путем могу найти способ открытия банки )) спасибо!

#8 d654525

    Активный участник

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 16 Февраль 2017 - 14:48

а потом это вычисление в крон каждые 5 минут поставить? какой-то код нужно добавлять или это вычисление как есть использовать? я там добавил условие, чтобы опред поле не содержало слово "СМС", правильно оформил?

if ($line['f3761'] == "Заявка: Новая") AND ($line['f7041'] not like "СМС") {
sendsms("СМС-Авто сообщение - Заявка принята", $line['f3711']);
}

#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Февраль 2017 - 15:06

Причем тут крон, не понял? Я разве что то писал про крон? Как раз наоборот, вроде четко сказал что рассылка по расписанию тут не нужна, а нужна отправка по конкретному событию в той таблице, куда у вас заявки падают. Соответственно добавляете в эту таблицу вычисление на событие изменения поля f3761 (не знаю как оно у вас называется). А вы зачем то полностью дублируете тоже самое что у вас уже было и не работало, но только более сложным способом через код.

#10 d654525

    Активный участник

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 16 Февраль 2017 - 16:04

что-то получаю ошибку

if (($line['f3761'] == "Заявка: Новая") AND ($line['f7041'] not like "СМС")) {
sendsms("СМС-Авто сообщение - Заявка принята", $line['f3711']);


вычисление такое:


if (($line['Этап'] == "Заявка: Новая") AND ($line['Рассылки'] not like "СМС")) {
sendsms("СМС-Авто сообщение - Заявка принята", $line['Имя']);
}


#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Февраль 2017 - 16:54

Цитата

$line['Рассылки'] not like "СМС"

Оператора "not like" в PHP не существует, вы путаете с SQL. Не понял, зачем вам вообще здесь это условие, я вроде как его не прописывал.

#12 d654525

    Активный участник

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 16 Февраль 2017 - 17:50

я включил, чтобы вычисление исключало те записи, в логе рассылки которых (поле f7041) нет информации о том, что рассылка делалась. иначе. нужно ведь отправить только 1 раз. тогда можно ведь проще наверное? проверять, что поле с логом пустое.

if (($line['Этап'] == "Заявка: Новая") AND ($line['Рассылки'] == "")) {
sendsms("Текст сообщения", $line['Телефон']);
}


А можно как-то вставить в текст сообщения имя из поля "Имя"?

Сообщение отредактировал d654525: 16 Февраль 2017 - 18:12


#13 d654525

    Активный участник

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 16 Февраль 2017 - 18:32

приветственное смс при получении новой заявки не пишется в лог рассылки и не отображается в таблице рассылок. можно как-то в лог писать? иначе будет повторно рассылать несколько раз, т.к. лог будет пустым

Сообщение отредактировал d654525: 17 Февраль 2017 - 06:54


#14 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Февраль 2017 - 09:13

Не будет ничего повторно рассылать, еще раз повторюсь - это не рассылка по расписанию! А отправка по конкретному событию, а именно - изменение поля Этап. Если поле не меняется, и его значение при этом не ставится снова "Заявка: Новая", то событие повторно возникнуть не может! Поэтому проверять лог и записывать чего либо него в данном случае не требуется. Весь смысл вычисления как раз в том чтобы избавится от проверки по логу и заменить на событие, а вы все упорно пытаетесь вернуться к тому же самому.

Что касается архива рассылок, то все рассылки, отправленные через программу, записываются туда. Так что возможно вы просто не там смотрите. Например, перепутали архив писем и архив смс.

#15 d654525

    Активный участник

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 17 Февраль 2017 - 09:52

да, вы правы - проверил работает. а можно в это вычисление добавить запись текста в лог, чтобы зафиксировать факт отправки?

#16 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Февраль 2017 - 10:18

Боюсь именно имитировать запись в лог, как при рассылке, через вычисление проблематично. Можно разве что записывать в поле свой текст, но без результата, ушло смс успешно или нет.

$line['Поле лога'] = "СМС отправлено";


#17 d654525

    Активный участник

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 17 Февраль 2017 - 11:27

этого будет достаточно. правильно я связываю их в 1 действие?


if (($line['Этап'] == "Заявка: Новая") AND ($line['Рассылки'] == "")) {
sendsms("Текст сообщения", $line['Телефон']);
$line['Поле лога'] = "СМС отправлено";
}

#18 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Февраль 2017 - 14:35

Так то да, но поле лога у вас наверное по другому как-то называется? Я же только пример привел.





Количество пользователей, читающих эту тему: 4

0 пользователей, 4 гостей, 0 анонимных