*Emacs или vi?* Сегодня мы обойдем весь этот спор и будем совершать звонки с помощью Twilio прямо из csh (или, что более вероятно, tcsh). Не прощаясь с C Shell, мы пройдем через поиск доступного номера, его покупку и совершение звонка с использованием API Twilio и встроенных команд *NIX.
Перейдите в консоль Twilio, чтобы начать. Войдите в свой существующий аккаунт или зарегистрируйтесь для бесплатной учетной записи (обязательно подтвердите свой номер, он понадобится позже). Когда это будет сделано, найдите **Сводку аккаунта**, как показано ниже:
Используя эту информацию, замените переменные `account_sid` и `auth_token` ниже на значения ‘ACCOUNT SID’ и ‘AUTH TOKEN’ из консоли Twilio. (Нажмите на значок глаза, чтобы увидеть ваш AUTH TOKEN).
Выполните следующие команды в вашей оболочке:
«`
set account_sid=»ACXXXXXXXXXXXXXXXXXXXXX»
set auth_token=»ваш_auth_token»
«`
Теперь, когда наш Account SID и токен аутентификации настроены, мы можем запросить REST API Twilio, чтобы найти доступные телефонные номера. Нам нужно найти один (и купить его), чтобы совершать звонки из нашего скрипта.
«`
set 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
```
Если вы вставите эту команду выше и нажмете Enter, переменная `available_number` будет установлена на первый номер, который вернет Twilio.
Давайте разберем, что происходит в этой насыщенной строке:
`set available_number=` — это синтаксис для установки локальной переменной. Все, что содержится в обратных кавычках, будет выполнено и присвоено переменной *available_number*.
Мы используем пакет программного обеспечения cURL и HTTP-глагол GET, чтобы запросить у конечной точки доступных номеров Twilio свободный номер. Флаг '-u' используется для предоставления учетных данных аккаунта через HTTP Basic Auth. `curl -X GET "https://api.twilio.com/[опущено] -u "${account_sid}:${auth_token}"` — внутри двойных кавычек происходит подстановка переменных, которые мы установили ранее в эту команду. **"|"** Символ конвейера в оболочке означает, что результаты предыдущей команды передаются следующей команде (в данном случае мы передаем ответ Twilio в **sed**).
Используется пакет для манипуляции потоками sed, чтобы извлечь только первое вхождение тегов из XML-ответа Twilio. `sed -n «/PhoneNumber/{s/.*//;s/<\/PhoneNumber.*//;p;}"` позволяет нам объединять команды в оболочке. **&&** выводит переменную `echo $available_number` `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}"
```
Нажмите Enter, и вы станете счастливым обладателем нового номера Twilio (если нет, возможно, номер уже был куплен кем-то другим — повторите шаг поиска доступного номера и попробуйте снова).
Если вы внимательны, то, вероятно, заметите:
- Теперь мы используем метод HTTP POST
- Мы отправляем параметр `PhoneNumber` на конечную точку IncomingPhoneNumbers и подставляем номер телефона, который нашли на предыдущем шаге
Если все прошло хорошо, теперь вы владеете номером `available_number` и готовы к главному результату.
TwiML, язык разметки Twilio, — это язык, который вы пишете, чтобы дать инструкции Twilio о том, как обрабатывать телефонные звонки.
У TwiML много функций (ознакомьтесь с нашей документацией по TwiML), которые стоит изучить, когда вы закончите работу с командной строкой. Также обратите внимание, что Twilio может размещать ваш пользовательский TwiML в TwiML-бинах, избавляя вас от необходимости настраивать хостинг для изучения.
Для этого руководства мы будем использовать пример TwiML, предоставленный Twilio, который можно найти здесь.
Замените переменную `your_number` ниже на подтвержденный номер Twilio в вашем аккаунте и выполните следующую строку:
```
set 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 (больше вариантов ), за которым последует расслабляющая музыка. Мы знали правила игры и сыграли в нее.
Будь то для прототипирования или добавления функций в ваши производственные скрипты, работа с API Twilio из командной строки — полезный навык. С этим руководством вы теперь знаете, как найти, купить и использовать новый номер Twilio все из csh или tcsh. Мы знаем, что вы нас не подведете — напишите нам в Twitter @twilio о том, что вы создадите!
Дальнейшее изучение: