Отправка данных от бота на электронную почту

Данные, которые Собеседник сообщает Боту, можно отправлять на электронную почту.

Например, посетитель сайта в диалоге с Ботом отвечает на несколько вопросов анкеты, сообщает свои контактные данные, а Бот пересылает всю информацию на электронную почту менеджера для дальнейшей квалификации.

На Платформе chatme.ai осуществить такую передачу данных от Бота на электронную почту можно двумя способами.

Вариант 1: С помощью сервиса Albato

  • Создайте интеграцию с сервисом по инструкции Подключение Albato.

  • Зайдите в Bot Builder, перейдите на вкладку External Requests и добавьте новый внешний запрос, нажав на Add.

  • На вкладке Main укажите название для запроса в поле Name, в поле Endpiont выберите тип запроса POST и вставьте сгенерированный и проверенный через Postman в Albato вебхук. По желанию заполните поле Description.

  • Далее заполните вкладку Headers: в поле New name пропишите Content-Type, в поле Value application/json.

  • На вкладке Data в поле Data type выберите JSON (указывается по умолчанию). В поле Data укажите названия переменных, значения которых необходимо отправить на электронную почту. Переменные должны быть сохранены в слотах Memory или Slot Filling.

  • Вернитесь к построению Сценария вашего Бота, перейдя на вкладку Agent Designer.

  • Там, где нужно осуществить передачу данных на email, добавьте слот External Request.

  • В поле Name пропишите название слота, в поле Request выберите из выпадающего списка ранее созданный внешний запрос.

Вариант 2: С помощью микросервиса chatme.ai на примере Gmail

Настройка доступa к Gmail в сторонних почтовых клиентах

Включите IMAP доступ

  • В Gmail откройте почтовый ящик, на который нужно настроить отправку данных.

  • В правом верхнем углу перейдите в меню Настройки (Settings).

  • Откройте вкладку Пересылка и POP/IMAP (Forwarding and POP/IMAP).

  • В разделе Доступ по протоколу IMAP (IMAP access) выберите Включить IMAP (Enable IMAP).

  • Нажмите Сохранить (Save Changes).

Разрешение доступа для приложений

  • Перейдите по ссылке https://myaccount.google.com/lesssecureapps.

  • Установите переключатель в положение Небезопасные приложения разрешены (проверьте, что в правом верхнем углу выбран нужный почтовый ящик).

Настройка отправки в Диалоговом Сценарии

  • Зайдите в Bot Builder, перейдите на вкладку External Requests и добавьте новый внешний запрос, нажав на Add.

  • На вкладке Main укажите название для запроса в поле Name, в поле Endpiont выберите тип запроса POST и вставьте следующий URL: http://projects-dev.chatme.ai:5051/send_email (или ваш URL-адрес, где разместите код программы). По желанию заполните поле Description.

  • Далее заполните вкладку Headers: в поле New name пропишите Content-Type, в поле Value application/json.

  • На вкладке Data в поле Data type выберите JSON (указывается по умолчанию). В поле Data вставьте следующий скрипт:

payload = {'sender': 'sender',
 'recipient': 'recipient', 
'password': 'password', 
'subject': 'subject', 
'text': 'text', }

sender – адрес электронной почты отправителя;

recipient – адрес электронной почты получателя;

password – пароль от электронной почты отправителя,

subject – тема письма;

text – текст письма.

  • Вернитесь к построению Сценария вашего Бота, перейдя на вкладку Agent Designer.

  • Там, где нужно осуществить передачу данных на email, добавьте слот External Request.

  • В поле Name пропишите название слота, в поле Request выберите из выпадающего списка ранее созданный внешний запрос.

Код микросервиса

Справочно, ниже представлен код описанного выше микросервиса. Программа написана на фреймворке django (python). Вы можете разместить код программы на вашем URL-адресе и использовать его в качестве Endpoint.

from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse
import smtplib
import jso
@csrf_exempt
def send_email(request):
    if request.method == 'POST':  #
        data = request.body.decode('utf-8')
        dicts = json.loads(data)
        sender = dicts['sender']
        recipient = dicts['recipient']
        password = dicts['password']
        subject = dicts['subject']
        text = dicts['text']
        try:
            smtp_server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
            smtp_server.login(sender, password)
            message = "Subject: {}\n\n{}".format(subject, text)
            smtp_server.sendmail(sender, recipient, message)
            smtp_server.close()
            return JsonResponse({'status': 'ok'})
        except smtplib.SMTPAuthenticationError:
            return JsonResponse({'status': 'Проверьте натройки SMTP доступа почты или введенные данные'})
        except smtplib.SMTPSenderRefused:
            return JsonResponse({'status': 'Проверьте введенные данные'})
        finally:
            smtp_server = smtplib.SMTP_SSL("smtp.gmail.com", 465)            smtp_server.close()

Запрос возвращает следующие статусы:

  1. status': 'ok' — сообщение отправлено;

  2. 'status': 'Проверьте натройки SMTP доступа почты или введенные данные';

  3. 'status': 'Проверьте введенные данные'.

Last updated