Пример работы с ePochta SMS для командной оболочки Bash
Скрипт для оболочки Bash позволяет отправлять сообщения прямо с консоли пользователя, протестирован на версии 4.4.12.
Базовые положения
Для активации смс шлюза необходимо в панели управления сервисом ePochta SMS в «Настройках» активировать использование API. Для версии 2.0 в закладке «ePochta SMS», в пункте «XML интерфейс включен» необходимо выбрать пункт «Да». В пункте «XML интерфейс: режим работы» выбрать либо «Реальная отправка», либо «Тестовый режим». Соответственно для версии 3.0 в пункте «Активировать API 3.0» установите «Да».
Загрузка и установка
Скачайте файл и сохраните в любой папке на вашем компьютере. Обратите внимание, перед использованием срипта вам необходимо заполнить значение параметров LOGIN и PASSWORD для версии 2.0, а также указать privateKey и publicKey для 3.0, которые можно взять в личном кабинете в разделе Настройки смс сервиса
Отправка смс
Получения статуса отправленной смс
Получение цены отправки
Получение баланса
Отправка смс:
#!/bin/bash set -u URL='http://api.atompark.com/api/sms/3.0/' VERSION="3.0" privateKey='your private key' publicKey='your publicKey key' function logging { echo "$1"; } function calcControlSum(){ local action=$1 local sum='' { # eval string into a new associative array eval "declare -A params="${2#*=} # proof that array was successfully created declare -p params } &> /dev/null params[version]="$VERSION" params[action]="$action" local keys=() for i in "${!params[@]}" do keys+=($i) done local skeys=($(echo "${keys[@]}" | sed 's/ /\n/g' | sort)) for i in "${!skeys[@]}" do sum+=${params[${skeys[$i]}]} done sum+="$privateKey" echo -n "$sum" | md5sum | cut -d' ' -f1 } args=("$@") function sendSms { local action="sendSMS" local sender=$1 local text=$2 local phone=$3 local datetime=$4 local sms_lifetime=$5 { declare -A params params=( [sender]="$sender" [text]="$text" [phone]="$phone" [datetime]="$datetime" [sms_lifetime]="$sms_lifetime" [key]="$publicKey" ) sum=$(calcControlSum "$action" "$(declare -p params)") } &> /dev/null curl --request POST --data "sender=$sender&text;=$text☎=$phone&datetime;=$datetime&sms;_lifetime=$sms_lifetime&key;=$publicKey∑=$sum" "$URL$action" } function addAddressbook { local action="addAddressbook" local name=$1 local description=$2 { declare -A params params=( [name]="$name" [description]="$description" [key]="$publicKey" ) sum=$(calcControlSum "$action" "$(declare -p params)") } &> /dev/null curl --request POST --data "name=$name&description;=$description&key;=$publicKey∑=$sum" "$URL$action" } function addPhoneToAddressBook { local action="addPhoneToAddressBook" local idAddressBook=$1 local phone=$2 local variables=$3 { declare -A params params=( [idAddressBook]="$idAddressBook" [phone]="$phone" [variables]="$variables" [key]="$publicKey" ) sum=$(calcControlSum "$action" "$(declare -p params)") } &> /dev/null curl --request POST --data "idAddressBook=$idAddressBook☎=$phone&variables;=$variables&key;=$publicKey∑=$sum" "$URL$action" } function getUserBalance { local action="getUserBalance" local currency=$1 { declare -A params params=( [currency]="$currency" [key]="$publicKey" ) sum=$(calcControlSum "$action" "$(declare -p params)") } &> /dev/null curl --request POST --data "currency=$currency&key;=$publicKey∑=$sum" "$URL$action" } function createCampaign { local action="createCampaign" local sender=$1 local text=$2 local list_id=$3 local datetime=$4 local batch=$5 local batchinterval=$6 local sms_lifetime=$7 local control_phone=$8 { declare -A params params=( [sender]="$sender" [text]="$text" [list_id]="$list_id" [datetime]="$datetime" [batch]="$batch" [batchinterval]="$batchinterval" [sms_lifetime]="$sms_lifetime" [control_phone]="$control_phone" [key]="$publicKey" ) sum=$(calcControlSum "$action" "$(declare -p params)") } &> /dev/null curl --request POST --data "sender=$sender&text;=$text&list;_id=$list_id&datetime;=$datetime&batch;=$batch&batchinterval;=$batchinterval&sms;_lifetime=$sms_lifetime&control;_phone=$control_phone&key;=$publicKey∑=$sum" "$URL$action" } usage="$(basename "$0") [-h] [-a (send|balance|add_addressbook|add_phone|create_campaign)] [-s n] [-t n] [-p n] [-n n] -- api v3.0 sms gateway for sending sms where: -h show this help text -a \033[4m action_name \033[0m \033[1m send \033[0m send sms on phones -s sender name -t text sms -p phones (example: '380933630000') -d datetime (default: '') -l lifetime (default: 0) -n id's of phones \033[1m add_addressbook \033[0m send sms on phones -b address book name -d description of book \033[1m add_phone \033[0m send sms on phones -i id of address book -p phones (example: '380933630000') \033[1m create_campaign \033[0m send sms on phones -s sender name -t text sms -i id of address book -d datetime (default: '') -l lifetime (default: 0) \033[1m balance \033[0m user's balance -c currency (default: USD)" while getopts ":hs:i:l:a:b:s:t:p:n:" opt; do case $opt in a) ACTION="${OPTARG}" ;; b) BOOK_NAME="${OPTARG}" ;; c) CURRENCY="${OPTARG}" ;; i) BOOK_ID="${OPTARG}" ;; d) DATETIME="${OPTARG}" ;; l) LIFETIME="${OPTARG}" ;; s) SENDER="${OPTARG}" ;; t) TEXT="${OPTARG}" ;; p) STR_PHONES="${OPTARG}" ;; h) echo -en "$usage" printf "\n" exit ;; \?) printf "illegal option: -%s\n" "$OPTARG" >&2 echo -en "$usage" >&2 printf "\n" exit 1 ;; :) logging "Option -${OPTARG} requires an argument." ; exit 252 ;; esac done shift $(($OPTIND - 1)) if [[ "${ACTION:-unset}" == "unset" ]]; then echo -e "Parameters ACTION not found. " exit 1 fi case $ACTION in send) if [[ "${SENDER:-unset}" == "unset" ]]; then echo -e "Parameters SENDER not found. " exit 1 fi if [[ "${TEXT:-unset}" == "unset" ]]; then echo -e "Parameters TEXT not found. " exit 1 fi if [[ "${STR_PHONES:-unset}" == "unset" ]]; then echo -e "Parameters STR_PHONES not found. " exit 1 fi if [[ "${DATETIME:-unset}" == "unset" ]]; then DATETIME="" fi if [[ "${LIFETIME:-unset}" == "unset" ]]; then LIFETIME="0" fi sendSms "$SENDER" "$TEXT" "$STR_PHONES" "$DATETIME" "$LIFETIME" ;; balance) if [[ "${CURRENCY:-unset}" == "unset" ]]; then CURRENCY="USD" fi getUserBalance "$CURRENCY" ;; add_addressbook) if [[ "${BOOK_NAME:-unset}" == "unset" ]]; then echo -e "Parameters BOOK_NAME not found. " exit 1 fi addAddressbook "$BOOK_NAME" "" ;; add_phone) if [[ "${BOOK_ID:-unset}" == "unset" ]]; then echo -e "Parameters BOOK_ID not found. " exit 1 fi if [[ "${STR_PHONES:-unset}" == "unset" ]]; then echo -e "Parameters STR_PHONES not found. " exit 1 fi addPhoneToAddressBook "$BOOK_ID" "$STR_PHONES" "" ;; create_campaign) if [[ "${SENDER:-unset}" == "unset" ]]; then echo -e "Parameters SENDER not found. " exit 1 fi if [[ "${TEXT:-unset}" == "unset" ]]; then echo -e "Parameters TEXT not found. " exit 1 fi if [[ "${BOOK_ID:-unset}" == "unset" ]]; then echo -e "Parameters BOOK_ID not found. " exit 1 fi if [[ "${DATETIME:-unset}" == "unset" ]]; then DATETIME="" fi if [[ "${LIFETIME:-unset}" == "unset" ]]; then LIFETIME="0" fi createCampaign "$SENDER" "$TEXT" "$BOOK_ID" "$DATETIME" "$LIFETIME" 0 0 "" ;; :) logging "Option -${OPTARG} requires an argument." ; exit 252 ;; esac printf "\n"
По запросу предоставляется необходимое количество дополнительных смс для тестирования сервиса массовых смс-уведомлений ePochta SMS.
Есть вопрос?
- 8 (800) 555-09-63
- Бесплатно по России
Новости:
- 2020-11-23
- ePochta объявляет старт Черной Пятницы: Спеццена на рассылку в WhatsApp
- 2020-11-18
- С 1 декабря 2020 года оператор МТС повышает стоимость СМС
- 2020-05-04
- Вебинар: СМС маркетинг. Что писать в тексте СМС рассылок?
- 2020-04-28
- Операторы повышают цены СМС рассылки по прямому каналу в РФ
- 2019-12-21
- Украинские операторы повышают цену СМС