Закройте текстовый редактор! Мы научимся совершать звонки с помощью Twilio прямо из командной строки bash или zsh. Не покидая терминал, мы пройдём путь от поиска доступного номера до его покупки и совершения звонка, используя стандартные встроенные команды *NIX.
Начнём!
Перейдите в консоль Twilio. Войдите в аккаунт или зарегистрируйтесь (не забудьте подтвердить свой номер), затем найдите раздел **Account Summary**, как показано ниже:
Вам нужно заменить переменные ‘account_sid’ и ‘auth_token’ ниже на значения ‘ACCOUNT SID’ и ‘AUTH TOKEN’ из вашей консоли Twilio. Нажмите на значок глаза, чтобы увидеть токен авторизации, и скопируйте его в терминал.
«`
account_sid=»ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX»
auth_token=»your_auth_token»
«`
Прежде чем совершить звонок с помощью Twilio, нам нужно получить номер телефона Twilio. Теперь, когда наши учётные данные API настроены, мы можем запросить ресурс AvailablePhoneNumbers, чтобы найти новый номер для нашего аккаунта.
«`
available_number=`curl -X GET \
«https://api.twilio.com/2010-04-01/Accounts/${account_sid}/AvailablePhoneNumbers/US/Local» \
-u «${account_sid}:${auth_token}» | \
sed -n «/PhoneNumber/{s/.*//;s/<\/PhoneNumber.*//;p;}"` \
&& echo $available_number
```
Выполнение этой команды присвоит переменной `available_number` первый доступный номер, который вернёт Twilio.
В этой строке происходит несколько действий — давайте разберём их:
`available_number=` — синтаксис в bash или zsh для установки локальной переменной. Обратные кавычки (`` ` ``) содержат выражение, которое оболочка должна выполнить для получения значения переменной.
Использует пакет cURL и HTTP-метод GET для запроса доступных номеров у конечной точки Twilio. Ключ '-u' означает, что мы будем передавать учётные данные с помощью HTTP Basic Auth. Синтаксис `${variable_name}` внутри двойных кавычек подставляет ранее заданные переменные в команду. `curl -X GET "https://api.twilio.com/[опущено]" -u "${account_sid}:${auth_token}"`
Символ `|` в оболочке означает, что результаты предыдущей команды передаются следующей.
Использует утилиту потоковой обработки sed для извлечения первого вхождения тегов `` из XML-ответа Twilio: `sed -n «/PhoneNumber/{s/.*//;s/<\/PhoneNumber.*//;p;}"`
Двойные амперсанды `&&` означают, что следующая команда будет выполнена сразу после завершения предыдущих.
`echo $available_number` — проверка, что мы получили результат, выводя содержимое переменной в терминал.
*(Для опытных пользователей: 'US' после AvailablePhoneNumbers в URI — это код страны по стандарту ISO.)*
**Примечание:** Если у вас не пробный аккаунт, вы потратите деньги на покупку номера. Подробнее на нашей странице с ценами.
Теперь, когда мы нашли доступный номер Twilio для покупки, нужно его приобрести. Следующая команда купит найденный номер и добавит его в ваш аккаунт.
```
curl -X POST -F "PhoneNumber=${available_number}" \
"https://api.twilio.com/2010-04-01/Accounts/${account_sid}/IncomingPhoneNumbers" \
-u "${account_sid}:${auth_token}"
```
После выполнения этой команды вы станете счастливым обладателем нового номера телефона от Twilio (если нет, возможно, номер только что купил кто-то другой — можно повторить шаг поиска доступного номера и попробовать снова). Обратите внимание на несколько изменений при использовании cURL с конечной точкой IncomingNumber:
- Теперь мы используем HTTP-метод POST
- Мы отправляем параметр `PhoneNumber` на конечную точку IncomingPhoneNumbers, подставляя номер, найденный на предыдущем шаге
Предполагая, что всё прошло успешно и теперь номер `$available_number` принадлежит вам, мы почти готовы к главному.
Когда Twilio совершает или принимает звонок, он запрашивает у вашего приложения инструкции по обработке звонка. Эти инструкции пишутся с помощью TwiML — языка разметки Twilio.
TwiML обладает множеством функций (ознакомьтесь с документацией по TwiML), которые вы сможете изучить после завершения работы в командной строке. Обратите внимание, что Twilio также может размещать ваш TwiML в TwiML Bins, что избавит вас от необходимости настраивать хостинг для ваших экспериментов.
В этом руководстве мы будем использовать пример TwiML, который можно найти здесь.
Когда будете готовы продолжить, отредактируйте переменную `your_number` ниже и выполните следующую команду:
```
your_number="+15555555555"
curl -X POST \
--data-urlencode "Url=https://demo.twilio.com/docs/voice.xml" \
--data-urlencode "To=${your_number}" \
--data-urlencode "From=${available_number}" \
"https://api.twilio.com/2010-04-01/Accounts/${account_sid}/Calls" \
-u "${account_sid}:${auth_token}"
```
Если всё прошло хорошо, вы услышите сообщение от голоса Alice (больше вариантов в ) и классический mp3. Надеемся, мы вас не разочаровали.
Использование API Twilio для совершения звонков, не покидая командную оболочку, упростит прототипирование и написание скриптов. Теперь вы можете автоматизировать поиск, покупку и совершение звонков с помощью Twilio, не выходя из bash или zsh.