· 6 years ago · Jan 15, 2020, 12:48 PM
1import os
2import requests
3import pymysql
4from pymysql.cursors import DictCursor
5from contextlib import closing
6from bot import bot
7import asyncio
8import aiohttp
9import time
10
11url = "https://calltools.ru/lk/cabapi_external/api/v1/phones/call/"
12#URL для создания звонка
13
14"""
15TODO:
16- Алгоритм недозвона
17"""
18
19async def call(chat_id, campaign_id, number, order_id):
20 status = None
21 attempt = 0
22
23 bot.send_message(chat_id, "Звонок поставлен в очередь. \nВ течение минуты будет выполнен дозвон.")
24 #Отправляем уведомление
25 data = {"public_key": "KEY",
26 "phone": number,
27 "campaign_id": campaign_id}
28
29 call = requests.post(url, data = data)
30 #Добавляем звонок в очередь
31
32 call_info = call.json()
33 #Получаем информацию
34 call_id = call_info["call_id"]
35 #ID созданного звонка
36
37 params = {"public_key": "KEY",
38 "call_id": call_id}
39
40 while status != "compl_finished":
41 call_details = requests.get("https://calltools.ru/lk/cabapi_external/api/v1/phones/call_by_id/", params = params).json()
42 #Получаем информацию о звонке
43 print(call_details)
44 status = call_details[0]["status"]
45 #Получаем статус
46 attempt += 1
47 #Проверяем кол-во запрсов к API
48 if attempt > 8:
49 bot.send_message(chat_id, "Мы не смогли дозвониться. Попробуйте указать другой номер.")
50 break
51 if call_details[0]["recorded_audio"]:
52 record_url = call_details[0]["recorded_audio"]
53 #Получаем URL записи звонка
54 trace = "records\\" + str(call_id) + ".mp3"
55 #Указываем путь к папке с записями
56 r = open(trace, "wb")
57 #Открываем директорию
58 record = requests.get(record_url)
59 #Получаем запись звонка
60 r.write(record.content)
61 r.close()
62 #Сохраняем аудио и закрываем
63
64 bot.send_voice(chat_id, open(trace, "rb"), caption = "Запись разговора:")
65 #Отправляем запись разговора
66 os.remove(trace)
67 #Удаляем аудиозапись
68
69 with closing(pymysql.connect(host="localhost", user="root", password="", db="callprank", charset="utf8mb4")) as conn:
70 with conn.cursor() as cursor:
71 query = "UPDATE orders SET done=1 WHERE id=%s" % str(payment_id)
72 cursor.execute(query)
73 conn.commit()
74 #Меняем поле заказа в БД на "Выполнено"
75
76 time.sleep(15)
77
78 return 1