Рубрики
Без рубрики

Как совершать телефонные звонки на Python

В этом руководстве показано, как использовать программу Python и API Twilio для набора телефонных звонков.

Автор оригинала: Matt Makai.

Старомодные добрые телефонные звонки остаются одним из лучших способов общения несмотря на множество новых приложений для смартфонов, появившихся в прошлом несколько лет. Всего несколько строк кода Python плюс интерфейс программирования веб-приложений мы можем совершать и принимать телефонные звонки из любого приложения.

В нашем примере вызовы будут произносить фрагмент текста и помещать всех входящих вызовов в записанную конференц-связь. Вы можете изменить инструкции, используя Twilio-глаголы TwiML , когда вы выполнять различные действия в телефонных звонках вашего собственного приложения.

Наши инструменты

У вас должен быть установлен Python 2 или 3 для построить это приложение. В этом посте мы также будем использовать:

Вы можете найти весь открытый исходный код для этого руководства в python-twilio-example-apps Репозиторий GitHub под Каталог no-framework/phone-calls . Используйте и скопируйте код для своих собственных приложений. Все в этом репозиторий и в этом сообщении в блоге имеют открытый исходный код под лицензией MIT.

Установить зависимости приложений

Наше приложение будет использовать Twilio вспомогательная библиотека Python для создания запроса HTTP POST к API Twilio. Вспомогательная библиотека Twilio можно установить из PyPI в виртуальный окружающая обстановка. Откройте свой терминал и используйте команду virtualenv для создания новый virtualenv:

virtualenv phoneapp

Вызовите сценарий activate в каталоге virtualenv bin/, чтобы this virtualenv активный исполняемый файл Python. Обратите внимание, что вам нужно будет выполните этот шаг в каждом окне терминала, которое вы хотите, чтобы virtualenv быть активным.

source phoneapp/bin/activate

Командная строка изменится после активации virtualenv на что-то вроде (phoneapp) $ .

Затем используйте команду pip , чтобы установить Пакет Twilio Python в virtualenv.

pip install twilio==5.7.0

Необходимая зависимость будет готова для проекта, как только установка скрипта завершена. Теперь мы можем писать и выполнять код Python для набирать телефонные номера.

Наш скрипт Python

Создайте новый файл с именем phone_calls.py и скопируйте или введите следующий строки кода.

from twilio.rest import TwilioRestClient


# Twilio phone number goes here. Grab one at https://twilio.com/try-twilio
# and use the E.164 format, for example: "+12025551234"
TWILIO_PHONE_NUMBER = ""

# list of one or more phone numbers to dial, in "+19732644210" format
DIAL_NUMBERS = ["",]

# URL location of TwiML instructions for how to handle the phone call
TWIML_INSTRUCTIONS_URL = \
  "http://static.fullstackpython.com/phone-calls-python.xml"

# replace the placeholder values with your Account SID and Auth Token
# found on the Twilio Console: https://www.twilio.com/console
client = TwilioRestClient("ACxxxxxxxxxx", "yyyyyyyyyy")


def dial_numbers(numbers_list):
    """Dials one or more phone numbers from a Twilio phone number."""
    for number in numbers_list:
        print("Dialing " + number)
        # set the method to "GET" from default POST because Amazon S3 only
        # serves GET requests on files. Typically POST would be used for apps
        client.calls.create(to=number, from_=TWILIO_PHONE_NUMBER,
                            url=TWIML_INSTRUCTIONS_URL, method="GET")


if __name__ == "__main__":
    dial_numbers(DIAL_NUMBERS)

Есть несколько строк, которые вам нужно изменить в этом приложении, прежде чем оно будет работать. Сначала введите один или несколько телефонных номеров, по которым вы хотите позвонить, в Список DIAL_NUMBERS. Каждый должен быть строкой, разделенной запятой. За например, DIAL_NUMBERS = ["+12025551234", "+14155559876", "+19735551234"] .

Затем TWILIO_PHONE_NUMBER , SID учетной записи и токен аутентификации, найдено в client = TwilioRestClient ("ACxxxxxxxxxx", "yyyyyyyyyy") линия, необходимо установить. Мы можем получить эти значения из Twilio Console .

В вашем веб-браузере перейдите на на веб-сайте Twilio и зарегистрируйтесь для получения бесплатной учетной записи или войдите в свою существующую учетную запись Twilio.

Экран регистрации Twilio.

Скопируйте SID учетной записи и токен аутентификации из консоли Twilio и вставьте их. в код вашего приложения:

Получите SID учетной записи и токен аутентификации из консоли Twilio.

Пробная учетная запись Twilio позволяет набирать и принимать телефонные звонки на ваш собственный подтвержденный номер телефона. Для обработки звонков с любого телефона номер, то вам нужно обновить свою учетную запись (нажмите кнопку обновления на верхняя панель навигации).

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

Экран управления телефонными номерами.

После нажатия на номер вы попадете в конфигурацию номера телефона экран. Вставьте URL-адрес с инструкциями TwiML и измените раскрывающийся список с «HTTP POST» на «HTTP GET». В этом посте мы будем использовать http://static.fullstackpython.com/phone-calls-python.xml , но этот URL может быть больше, чем просто статический XML-файл.

Экран настройки телефонного номера Twilio.

Сила Twilio действительно проявляется, когда этот URL обрабатывается вашим веб-сайтом. приложение, чтобы оно могло динамически отвечать инструкциями TwiML на основе номер входящего звонящего или другие свойства, хранящиеся в вашей базе данных.

Под веб-перехватчиком Voice вставьте http://static.fullstackpython.com/phone-calls-python.xml и измените раскрывающийся список справа от «HTTP POST» до «HTTP GET». Нажмите “Сохранить” кнопку в нижней части экрана.

Теперь попробуйте позвонить на свой номер телефона. Вы должны услышать фрагмент текста прочитанный голосом Алисы, и вы будете переведены на конференц-связь. Если никто больше не набирает номер, значит, должна играть удерживаемая музыка.

Телефонные звонки

Мы только что обрабатывали входящие звонки на наш номер телефона. Пришло время набирать исходящие телефонные звонки. Убедитесь, что ваш файл phone_calls.py сохранен и что ваш virtualenv все еще активирован, а затем выполните сценарий:

python phone_calls.py

Через мгновение все номера телефонов, которые вы пишете в списке DIAL_NUMBERS должны загореться звонками. Любой, кто ответит, услышит наше сообщение прочитанным голосом “Алисы”, а затем они будут помещены вместе в записанный конференц-связь, как когда кто-то набирает номер.

Вот мой входящий телефонный звонок:

Получение входящего телефонного звонка на iPhone.

Неплохо всего для нескольких строк кода Python!

Следующие шаги

Теперь, когда мы знаем, как совершать и принимать телефонные звонки с номера Twilio который следует программным инструкциям, мы можем сделать гораздо больше в нашем Приложения. Затем вы можете использовать одно из этих руководств, чтобы узнать больше о ваш номер телефона:

Вопросов? Свяжитесь со мной через Twitter @fullstackpython или @mattmakai . Я также на GitHub как mattmakai .

Что-то не так в этом посте? Вилка источник этой страницы на GitHub и отправьте запрос на перенос.