Сегодня мы заставим Билла прыгать от радости, купив новый номер Twilio и отправив SMS прямо из csh (или, скорее всего, *tcsh*). Здесь вы узнаете, как найти доступный номер, приобрести его и отправить SMS с помощью Twilio, не покидая C Shell.
Перейдите в консоль Twilio, чтобы начать. Войдите в существующий аккаунт или зарегистрируйтесь бесплатно (не забудьте подтвердить свой номер — он понадобится позже). Когда это будет сделано, найдите раздел **Account Summary**, как показано ниже:
Используя эту информацию, замените переменные `account_sid` и `auth_token` ниже на значения ‘ACCOUNT SID’ и ‘AUTH TOKEN’ из консоли Twilio (нажмите на значок глаза, чтобы увидеть AUTH TOKEN).
Выполните эти команды в вашем shell:
«`
set account_sid=»ACXXXXXXXXXXXXXXXXXXXXX»
set auth_token=»your_auth_token»
«`
Теперь, когда наш Account SID и токен авторизации настроены, мы можем запросить REST API Twilio, чтобы найти доступные телефонные номера. Нам нужно найти один (и приобрести его), чтобы отправлять SMS из нашего скрипта.
«`
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}"` — внутри двойных кавычек происходит подстановка переменных, которые мы установили ранее.
`|` — символ конвейера в shell означает, что результаты предыдущей команды передаются следующей (в данном случае мы передаём ответ Twilio в **sed**).
Используется пакет для обработки потоков sed, чтобы извлечь первое вхождение тегов `` из XML-ответа Twilio: `sed -n «/PhoneNumber/{s/.*//;s/<\/PhoneNumber.*//;p;}"`.
`&&` позволяет объединять команды в shell.
`echo $available_number` выводит переменную `available_number` в shell.
*(Для опытных пользователей: обратите внимание, что '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` на endpoint IncomingPhoneNumbers, подставляя номер, который нашли на предыдущем шаге
Если всё прошло успешно, теперь вы владеете номером `available_number` и готовы к главному.
Замените переменную `your_number` ниже на подтверждённый номер Twilio в вашем аккаунте и выполните следующую строку:
```
set your_number="+15555555555"
curl -X POST -F "Body=Привет, ваш новый номер телефона работает." \
-F "From=${available_number}" -F "To={$your_number}" \
"https://api.twilio.com/2010-04-01/Accounts/${account_sid}/Messages" \
-u "${account_sid}:${auth_token}"
```
Эта команда отправляет POST-запрос к ресурсу Messages с тремя обязательными параметрами: `Body`, `From` и `To`. Изучите все допустимые параметры для endpoint Messages и узнайте, как отправлять изображения или настраивать URL для обратных вызовов о статусе доставки сообщений.
Если всё прошло хорошо, ваш телефон должен зазвонить или завибрировать. Попробуйте изменить текст сообщения, добавив эмодзи, или отправьте SMS на другие номера.
Использование полезных endpoint Twilio, не покидая csh, значительно ускорит ваше прототипирование. Работа с командной строкой — отличный способ изучить API Twilio и добавить возможности связи в ваши shell-скрипты. С помощью вашего shell и этой статьи вы теперь можете искать номера, покупать их и отправлять SMS, не покидая csh — просто используйте то, что даёт вам *NIX.
Дальнейшее изучение: