Была поставлена задача отправлять записи входящих звонков отдела продаж руководителю в конце дня. Сервер телефонии у меня настроен вручную, веб интерфейс (freepbx) не установлен.
Самое простое решение пришедшее на ум - копировать mp3 файлы с записями разговоров в отдельную папку, после чего, в конце дня, отправлять эти файлы на почту и очищать папку.
Смотрим диалплан в астериске:
У меня настроена запись звонков с последующей и конвертацией их в mp3. Находим нужный контекст и смотрим как происходит сохранение и конвертация файла. Добавляем в конец команду копирования файла в папку /var/mp3/sales-in/
Теперь после записи и конвертирования файла, создается его копия в папке /var/mp3/sales-in
Я решил не углубляться в настройки почтового сервера, мы будем отправлять сообщения через ящик зарегистрированный на gmail. Для этого нам нужно настроить sendmail на работу с почтовым сервером гугла:
добавляем в конец (но до MAILER_DEFENITIONS) следующие строки:
Далее создаем папку и файл
Для больше защищенности выставляем права:
Преобразуем файл в нужный формат:
Пересобираем sendmail и перезагружаем его для принятия изменений:
Проверяем отправку сообщения примерно так:
Для отправки сообщений со вложениями установим почтовый клиент:
Во избежание проблем с кодировкой сообщений сделаем следующее:
Проверяем работу mutt, заменяя
Cоздаем и открываем файл:
Делаем скрипт исполняемым:
Запуск скрипта через crontab -e у меня не сработал. Заморачиваться с этим не стал - добавил его в /etc/crontab с указанием пользователя от имени которого будем запускать скрипт. Не забываем нажать Enter после последнего правила в кроне (у меня файл заканчивается на #) :)
Вот в общем и все.
Самое простое решение пришедшее на ум - копировать mp3 файлы с записями разговоров в отдельную папку, после чего, в конце дня, отправлять эти файлы на почту и очищать папку.
Делим задачу на 3 этапа:
- Подготовить файлы
- Настроить почтовый клиент
- Написать скрипт отправки сообщений и поместить его в cron
Подготавливаем файлы
Смотрим диалплан в астериске:nano /etc/asterisk/extensions.conf
У меня настроена запись звонков с последующей и конвертацией их в mp3. Находим нужный контекст и смотрим как происходит сохранение и конвертация файла. Добавляем в конец команду копирования файла в папку /var/mp3/sales-in/
exten => s,n,Set(monopt=nice -n 19 /usr/bin/lame -b 16 --silent "/var/mp3/${UNIQUEID}.wav" "/var/mp3/${UNIQUEID}.mp3" && rm -f "/var/mp3/${UNIQUEID}.wav" && chmod o+r "/var/mp3/${UNIQUEID}.mp3" && cp "/var/mp3/${UNIQUEID}.mp3" "/var/mp3/sales-in/");
Теперь после записи и конвертирования файла, создается его копия в папке /var/mp3/sales-in
Настраиваем отправку почты
Следующий этап - настройка sendmail и установка консольного почтового клиента MUTT для отправки писем с вложениями (sendmail самостоятельно этого не умеет):apt-get install sendmail
Я решил не углубляться в настройки почтового сервера, мы будем отправлять сообщения через ящик зарегистрированный на gmail. Для этого нам нужно настроить sendmail на работу с почтовым сервером гугла:
nano /etc/mail/sendmail.mc
добавляем в конец (но до MAILER_DEFENITIONS) следующие строки:
# for gmail
define(`SMART_HOST',`smtp.gmail.com')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`RELAY_MAILER',`esmtp')dnl
define(`RELAY_MAILER_ARGS', `TPC $h 587')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl
Далее создаем папку и файл
mkdir /etc/mail/auth
nano /etc/mail/auth/client-info
И добавляем в него следующие строки (заменяя yourlogin@gmail.com на ваш почтовый адрес, а password на ваш пароль) :AuthInfo:smtp.gmail.com "U:root" "I:yourlogin@gmail.com" "P:password" "M:PLAIN"
AuthInfo:smtp.gmail.com:587 "U:root" "I:yourlogin@gmail.com" "P:password" "M:PLAIN"
Для больше защищенности выставляем права:
chmod 600 /etc/mail/auth/client-info
chmod 700 /etc/mail/auth
Преобразуем файл в нужный формат:
makemap -r hash /etc/mail/auth/client-info.db < /etc/mail/auth/client-info
Пересобираем sendmail и перезагружаем его для принятия изменений:
cd /etc/mail/
make
/etc/init.d/sendmail reload
Проверяем отправку сообщения примерно так:
echo "текст письма" | sendmail -s "Это тест" your@mail.ru
Для отправки сообщений со вложениями установим почтовый клиент:
apt-get install mutt
Во избежание проблем с кодировкой сообщений сделаем следующее:
echo "application/octet-stream txt" >> ~/.mime.types/
Проверяем работу mutt, заменяя
path/to/yourfile/mp3
на путь к файлу:echo "Текст письма" | mutt -a /path/to/yourfile/mp3 -s "Тема письма" -- your@mail.ru
Пишем скрипт отправки сообщения и помещаем его в cron
Скрипт должен проверять наличие файлов в папке со звонками. Если файлов нет - отправлять письмо сообщающее об отсутствии звонков. В противном случае - прикреплять файлы к письму. При этом короткие записи (не отвеченные) нам не нужны, поэтому сначала удалим файлы размером менее 10 килобайт.Cоздаем и открываем файл:
nano /home/gk/mail-calls.sh
#!/bin/bash
#проверяем, если ли файлы в директории
if [ -z "`ls /var/mp3/sales-in/`" ]; then
# сообщаем, что звонков не было
echo "Папка пустая"
echo $(date +"%d.%m.%y")" входящих звонков в отдел продаж не было." | mutt -s $(date +"%d.%m.%y")" звонков в не было." -- test@domain.ru
echo "Пустое письмо отправленно"
else
echo "Звонки были"
#удаляем короткие файлы менее 10 килобайт
echo "Убираем неотвеченные звонки"
find /var/mp3/sales-in/ -type f -size -10k -delete
#отправляем файлы на почту
echo "Входящие звонки отдела продаж за "$(date +"%d.%m.%y") | mutt -a $(ls /var/mp3/sales-in/*.mp3) -s "Звонки от "$(date +"%d.%m.%y") -- test@domain.ru
echo "Cообщение отправлено"
# удаляем файлы
rm -rf /var/mp3/sales-in/*
echo "Файлы удалены"
fi
Делаем скрипт исполняемым:
chmod +x /home/gk/mail-calls.sh
Ставим скрипт в автозагрузку: каждый день в 22:00.Запуск скрипта через crontab -e у меня не сработал. Заморачиваться с этим не стал - добавил его в /etc/crontab с указанием пользователя от имени которого будем запускать скрипт. Не забываем нажать Enter после последнего правила в кроне (у меня файл заканчивается на #) :)
00 22 * * * root /home/gk/mail-calls.sh
#
Вот в общем и все.
Sendmail-ом также можно слать почту через свой smtp. В моем случае Zimbra (25 port, starttls, normal password), настройки изменились следующи образом:
ОтветитьУдалитьsendmail.mc:
# for mydomaine.ru
define(`confPRIVACY_FLAGS', `needmailhelo,authwarnings,noexpn,novrfy,noverb')dnl
define(`SMART_HOST',`smtp.mydomaine.ru')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`RELAY_MAILER',`esmtp')dnl
define(`RELAY_MAILER_ARGS', `TPC $h 25')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl
client-info:
AuthInfo:smtp.mydomaine.ru "U:noreply@mydomaine.ru" "I:noreply@mydomaine.ru" "P:password" "M:LOGIN"
AuthInfo:smtp.mydomaine.ru:25 "U:noreply@mydomaine.ru" "I:noreply@mydomaine.ru" "P:password" "M:LOGIN"