После запуска офисной телефонии, решил ввести своеобразный «контроль качества». Своего рода ОТК, для определения качества общения отвечающих на звонки сотрудников. Так как звонков относительно много, и слушать все не представляется возможным, хотя в идеальном мире все должно обстоять именно так, было решено слушать хотя бы выборочные записи звонков. Так как под капотом у нашей АТС — Asterisk, которая аккуратно записывает звонки и кладет их в определенную папку с waw разрешением то дело было за малым автоматизировать отправку пяти выборочных записей на почту нужным людям. Кстати все это дело будет происходить на «любимой» мною ОСи Windows 10.
Итак накидаем по быстрому простой скрипт:
# -*- coding: utf-8 -*- import os, random import datetime from datetime import timedelta from os import path import smtplib from os.path import basename from email.mime.application import MIMEApplication from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header from email.utils import COMMASPACE, formatdate now = datetime.datetime.now() yesterday = '{:%Y.%m.}{}'.format(now, now.day - 1) # Вчерашний день currentDay = now.strftime("%Y%m%d") # Текущая дата # Полный путь до каталга с записями. имеет в своем наименовании часть текущей даты folderPath= 'N:/callrecords/autorecords' + '/' + currentDay + '/' # Сохраняем названия файлов в массив files = [f for f in os.listdir(folderPath)] # Сохраняем все в подмножество, для исключения дублирующих записей basket = set() while len(basket) < 5: basket.add(random.choice(files)) fromaddr = 'ваша почта' toaddr = ['******@mail.ru', '********@mail.ru', '*********@mail.ru'] subject = 'АТС COMPANY' text = '5 случайных звонков на дату ' + yesterday def send_mail(send_from, send_to, subject, text, files=None): # assert isinstance(send_to, list) msg = MIMEMultipart() msg['From'] = send_from msg['To'] = COMMASPACE.join(send_to) msg['Date'] = formatdate(localtime=True) msg['Subject'] = subject msg.attach(MIMEText(text)) for f in basket or []: with open(folderPath + '' + f, "rb") as fil: part = MIMEApplication( fil.read(), Name=basename(f) ) # After the file is closed part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f) msg.attach(part) smtp = smtplib.SMTP('smtp.gmail.com', 587) smtp.ehlo() smtp.starttls() smtp.login(fromaddr, "ваш_пароль") smtp.sendmail(send_from, send_to, msg.as_string().encode('utf-8')) smtp.close() send_mail(fromaddr, toaddr, subject, text)
Думаю из текста кода все итак понятно.
Сканируем каталог при помощи os.listdir, выбираем случайные при помощи random.choice(), хотя думаю можно было просто обойтись random.sample() — во втором случае можно было упростить код убрав подмножества.
Ну и собственно самое интересное и сложное что пришлось реализовать это отправку письма через smtp. Я решил использовать gmail, однако имейте ввиду, что в этом случае обязательно отключить проверку на ненадежные источники. Сделать это можно перейдя по ссылке, и отключив галочку.
Вот собственно и все, далее создаем bat-файл и регламентным заданием определяем с какой периодичностью и в какое время будут посылаться письма. Так легко и просто мы настроили прослушивание звонков.
Соль всей этой истории такова, что сам факт того, что сотрудники знают, что их звонки записываются и более того, что их кто то еще может прослушать, да еще и наказать за несоответствующее общение с клиентом, уже наводит порядок в умах людей.