Как отправить результат запроса Mysql в виде отчета Excel в чат-боте Messenger-Dialogflow с использованием python - PullRequest
0 голосов
/ 03 апреля 2019

Я создал чат-мессенджер с диалоговым потоком, используя программу Python как webhook. В одном из вариантов использования: пользователь запрашивает еженедельный отчет, не указывая ни одной недели (1 неделя / 2 недели и т. Д.). Программа Python не принимает никаких недель в качестве параметров и сохраняет результат в моем локальном файле как csv. Я хочу отправить этот CSV пользователю в виде вложения в чатботе.

На данный момент я сохраняю csv-файлы на своем локальном диске, который синхронизирован с Google Drive, и отправляю ссылку пользователю. Каждый раз, когда пользователь хочет обновления продаж недели недели. Но когда в реальной ситуации несколько пользователей запрашивают отчет одновременно, один из пользователей получает неправильный файл (независимо от того, какой запрос выполнялся последним).

        inte = get_parameter_from_req(req)
        week_num = round(inte)
        print(week_num)
        #cusid = pd.DataFrame([inte],columns = ['Weeks'])
        #cusid.to_csv('C:/Users/Jon/Desktop/Reporting BOT/Reporting Bot Code/num_of_weeks.csv',index = False)
        print("Inside DB Test")
        mydb = mysql.connector.connect(host="localhost",user="root",passwd="****",database = "jon_bp")
        mycursor =  mydb.cursor()
        mycursor.execute("select * from trans where t_date between curdate()-interval %s week AND curdate()",(week_num,))
        result = mycursor.fetchall()
        dataf = pd.DataFrame(result)
        dataf.columns = ['Name','Amount','t_date']
        dataf.to_csv('C:/Users/jon/Desktop/Reporting BOT/Report on cloud/Weekly Report by Bot.csv',index = False)

        response = {
            'fulfillmentText': 'Hi! Sales report for {0} weeks is ready.'.format(str(week_num)) +"\n"+ 'You can download the report from here: fix url for report',
        }

1 Ответ

0 голосов
/ 11 апреля 2019

Проведя дополнительное исследование, я нашел способ поделиться правильным файлом. Ниже приведены шаги:

  1. Я добавляю метку времени в имя файла (включая микросекунды) filename = 'my_file_{0}.csv'.format(datetime.now().strftime("%Y%m%d_%H%M%S%f")

  2. На этот раз и сохраняем этот файл в хранилище AWS S3.

  3. Создание ссылки с помощью имени файла, а затем обмен с пользователем.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...