Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: API
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
The Majesty
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
1

СМС рассылка

16.05.2016, 21:42. Просмотров 946. Ответов 3
Метки php (Все метки)

Всем Привет, короче у меня проблема есть данный класс СМС рассылки
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
class iqsms_JsonGate
{
    
    const ERROR_EMPTY_API_LOGIN = 'Empty api login not allowed'; 
    const ERROR_EMPTY_API_PASSWORD = 'Empty api password not allowed'; 
    const ERROR_EMPTY_RESPONSE = 'errorEmptyResponse';
    
    protected $_apiLogin = null;
    
    protected $_apiPassword = null;
    
    protected $_host = 'json.gate.iqsms.ru';
    
    protected $_packetSize = 200;
    
    protected $_results = array();
    
    public function __construct($apiLogin, $apiPassword)
    {
        $this->_setApiLogin($apiLogin);
        $this->_setApiPassword($apiPassword);
    }
    
    private function _setApiLogin($apiLogin)
    {
        if (empty($apiLogin)) {
            throw new Exception(self::ERROR_EMPTY_API_LOGIN);
        }
        $this->_apiLogin = $apiLogin;
    }
    
    private function _setApiPassword($apiPassword)
    {
        if (empty($apiPassword)) {
            throw new Exception(self::ERROR_EMPTY_API_PASSWORD);
        }
        $this->_apiPassword = $apiPassword;
    }
    
    public function setHost($host)
    {
        $this->_host = $host;
    }
    
    public function getHost()
    {
        return $this->_host;
    }
    
    private function _sendRequest($uri, $params = null)
    {
        $url = $this->_getUrl($uri);
        $data = $this->_formPacket($params);
 
        $client = curl_init($url);
        curl_setopt_array($client, array(
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_HEADER => false,
            CURLOPT_HTTPHEADER => array('Host: ' . $this->getHost()),
            CURLOPT_POSTFIELDS => $data,
        ));
        
        $body = curl_exec($client);
        curl_close($client);
        if (empty($body)) {
            throw new Exception(self::ERROR_EMPTY_RESPONSE);
        }
        $decodedBody = json_decode($body, true);
        if (is_null($decodedBody)) {
            throw new Exception($body);
        }
        return $decodedBody;
    }
    
    private function _getUrl($uri)
    {
        return 'http://' . $this->getHost() . '/' . $uri . '/';
    }
    
    private function _formPacket($params = null)
    {
        $params['login'] = $this->_apiLogin;
        $params['password'] = $this->_apiPassword;
        foreach ($params as $key => $value) {
            if (empty($value)) {
                unset($params[$key]);
            }
        }
        $packet = json_encode($params);
        return $packet;
    }
    
    public function getPacketSize()
    {
        return $this->_packetSize;
    }
    
    public function send($messages, $statusQueueName = null, $scheduleTime = null)
    {
        $params = array(
           'messages' => $messages,
           'statusQueueName' => $statusQueueName,
           'scheduleTime' => $scheduleTime,
        );
        return $this->_sendRequest('send', $params);
    }
    
    public function status($messages)
    {
        return $this->_sendRequest('status', array('messages' => $messages));
    }
    
    public function statusQueue($name, $limit)
    {
        return $this->_sendRequest('statusQueue', array(
            'statusQueueName' => $name,
            'statusQueueLimit' => $limit,
        ));
    }
    
    public function credits()
    {
        return $this->_sendRequest('credits');
    }
    
    public function senders()
    {
        return $this->_sendRequest('senders');
    }
    
}
и пример использования класса

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
include_once 'lib/iqsms_jsongate_class.php';
$gate = new iqsms_JsonGate('тут логин', 'тут пароль');
 
   var_dump($gate->credits()); // узнаем текущий баланс
   var_dump($gate->senders()); // получаем список доступных подписей
   
   $messages = array(
        array(
               "clientId" => "1",
               "phone"=> "71234567890",
               "text"=> "first message",
               "sender"=> "TEST" 
           ),
           array(
               "clientId" => "2",
               "phone"=> "71234567891",
               "text"=> "second message", 
               "sender"=> "TEST",
           ),
           array(
               "clientId" => "3",
               "phone"=> "71234567892",
               "text"=> "third message",
               "sender"=> "TEST",
           ),
       );
   var_dump($gate->send($messages, 'testQueue')); // отправляем пакет sms
   
   $messages = array(
    array("clientId"=>"1","smscId"=>11255142),
    array("clientId"=>"2","smscId"=>11255143),
    array("clientId"=>"3","smscId"=>11255144),
   );
   var_dump($gate->status($messages)); // получаем статусы для пакета sms
   var_dump($gate->statusQueue('testQueue', 10)); // получаем статусы из очереди 'testQueue'
проблема в том что при запуске скрипта возвращается это

array(2) { ["status"]=> string(2) "ok" ["credits"]=> int(0) } array(2) { ["status"]=> string(2) "ok" ["senders"]=> array(2) { [0]=> string(11) "CMC DUCKOHT" [1]=> string(6) "inform" } } array(2) { ["status"]=> string(2) "ok" ["messages"]=> array(3) { [0]=> array(2) { ["status"]=> string(22) "sender address invalid" ["clientId"]=> string(1) "1" } [1]=> array(2) { ["status"]=> string(20) "invalid mobile phone" ["clientId"]=> string(1) "2" } [2]=> array(2) { ["status"]=> string(20) "invalid mobile phone" ["clientId"]=> string(1) "3" } } } array(2) { ["status"]=> string(2) "ok" ["messages"]=> array(3) { [0]=> array(3) { ["status"]=> string(6) "queued" ["smscId"]=> int(11255144) ["clientId"]=> string(1) "3" } [1]=> array(3) { ["status"]=> string(6) "queued" ["smscId"]=> int(11255142) ["clientId"]=> string(1) "1" } [2]=> array(3) { ["status"]=> string(6) "queued" ["smscId"]=> int(11255143) ["clientId"]=> string(1) "2" } } } array(3) { ["status"]=> string(2) "ok" ["messages"]=> array(0) { } ["description"]=> string(14) "queue is empty" }

по идее должна произойти рассылка по выше описанным номерам, я уже задолбался.

она работает следующим образом массив данных(с номерами и сообщениями и др хнёй) конвертируется в json формат и отправляется на сервер за тем приходит хрень выше описанная

короче вот источник http://iqsms.ru/api/api_json-php/

Помогите чем можете
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2016, 21:42
Ответы с готовыми решениями:

Рассылка СМС
Еще раз всем привет, помогите пожалуйста разобраться... <?php function...

Как создается СМС-рассылка?
Я написал в этот раздел так как не знаю в каком направлении рыть чтобы хоть...

Рассылка push уведомлений
Всем доброго времени суток! =) Не могу разобраться с использованием API для...

Рассылка сообщений с таблицами из standalone приложения ВКонтакте
Создается standalone приложение Windows с использованием методов API ВКонтакте....

Смс рассылка
Есть сайт, на нем есть смс рассылка вариантов объектов для клиентов, где...

3
Para bellum
Эксперт PHP
4106 / 3053 / 986
Регистрация: 06.01.2011
Сообщений: 8,932
17.05.2016, 11:50 2
Лучший ответ Сообщение было отмечено The Majesty как решение

Решение

Цитата Сообщение от The Majesty Посмотреть сообщение
sender address invalid
Ясно же написано, по-моему. Заместо "TEST" укажите подпись, которая прикреплена к Вашему аккаунту.
1
Bely
22 / 4 / 0
Регистрация: 08.11.2012
Сообщений: 97
Записей в блоге: 1
24.05.2016, 15:08 3
The Majesty, реализовал? интересует меня тже смс расслыка по базе. причем аавтоматическая. если у чела др, идет смс от системы.
0
The Majesty
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
24.05.2016, 21:21  [ТС] 4
Да, реализовал, для вашей идеи нужен парсер-файл который будет парсить бд каждый день и сверять дату текущую и установленную в бд(день рождения друга), для того чтобы автоматизировать это дело просто включаете крон который в свою очередь запускает парсер файл, если парсер файл находит сходство текущей даты с датой в бд то запускает определённый скрипт с поздравлением или прочее, я с кроном не работал но принцип его работы понятен
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2016, 21:21

Рассылка на php
Всем хорошего дня) Есть сайт института дополнительного образования, база...

Почтовая рассылка
Вопрос такой: Написать скрипт рассылки не проблема, а вот предположим в базе...

Почтовая рассылка PHP
Здравствуйте! Подскажите, совсем не силён в PHP. Необходимо организовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru