Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для akalji
3 / 3 / 2
Регистрация: 10.03.2014
Сообщений: 51
VK API

CallbackAPI вызывает скрипт много раз

11.11.2016, 15:35. Показов 1976. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени!
Есть такая проблема. Написал скрипт который при получении сообщения в ЛС сообщества:
1) Присылает мне сообщение, что такой то пользователь обратился тогда то
2) Пишет пользователю от имени сообщества "спасибо за обращание, бла бла бла"
3) Пишет пользователю приветствие от моего имени

Но почему то вконтакте дергает мой скрипт по многу раз, и получается, что все сообщения приходят очень часто, причем сообщения одни и те же, с одим и тем же UNIX-time, которое отдает ВК.
В чем может быть причина?

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
<?php
    //Config
        $confirmation_token = '';
        $secret = '';
        $token  = '';
        $WorkerToken = '';
    //EndConfig
    if (!isset($_REQUEST)) {
        return;
    }
    $post = file_get_contents('php://input');
    $data = json_decode($post);
    if($data->type=='confirmation'){
        echo $confirmation_token;
    }else{
        if($data->secret==$secret){
            switch ($data->type) {
                case 'message_new':{
                    $user_id = $data->object->user_id;
                    if($user_id != "МОЙVKID"){
                        $unix_time = time();
                        $user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&v=5.0"));
                        $user_name = $user_info->response[0]->first_name;
                        $text = $data->object->body;
                        
                        $sentDate = date('d/m/Y H:i:s', $data->object->date);
                        $f = fopen('requests.log', 'a');
                        $string = "{$user_id} {$sentDate} {$text}\n{$post}\n\n";
                        fwrite($f, $string . PHP_EOL);
                        fclose($f);
                        
                        
                        $request_params = array(
                          'message' => "Пользователь {$user_name} http://vk.com/id{$user_id} {$sentDate} с номером обращения {$unix_time} оставил следующее сообщение: \n\n{$text}",
                          'user_id' => "МОЙVKID",
                          'access_token' => $token,
                          'v' => '5.0'
                        );
                        
                        $get_params = http_build_query($request_params);
                        file_get_contents('https://api.vk.com/method/messages.send?'. $get_params);
                        echo('ok');
                        
 
                        
                        $request_params1 = array(
                          'message' => "Здравствуйте {$user_name}! Спасибо что обратились к нам! В ближайшее время Вам ответит первый освободившиеся оператор. Ваше обращение номер {$unix_time}",
                          'user_id' => $user_id,
                          'access_token' => $token,
                          'v' => '5.0'
                        );
                        $get_params1 = http_build_query($request_params1);
                        file_get_contents('https://api.vk.com/method/messages.send?'. $get_params1);
                        echo('ok');
                        
                        
                        $request_params2 = array(
                          'message' => "Текст приветствия от меня",
                          'user_id' => $user_id,
                          'access_token' => $WorkerToken,
                          'v' => '5.0'
                        );
                        $get_params2 = http_build_query($request_params2);
                        file_get_contents('https://api.vk.com/method/messages.send?'. $get_params2);
                        echo('ok');
                    }else{echo('ok');}
                    break;
                }
            }
        }
    }
?>
Добавлено через 22 часа 36 минут
Проблема решена
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2016, 15:35
Ответы с готовыми решениями:

Не работает скрипт: "Сайт выполнил переадресацию слишком много раз"
Привет всем! Написал скрипт журнала посещаемости но он не работает по непонятным мне причинам. выдает: &quot;Страница недоступна Сайт...

Много поточность вызывает ошибку счета
Хотел реализовать многопоточность в коде для ускорения счета и столкнулся со следующим. Естественно сначала испытывал последовательный код...

Windows 7 вызывает много сомнений и вопросов
да уж 7 вызывает много сомнений и вопросов, в ней по прежнему много ограничений на функционал и скорей всего, более менее нормальная...

2
 Аватар для edward_freedom
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
11.11.2016, 16:40
akalji, Принято, если нашел самостоятельно ответ, то делиться с другими, вдруг у кого то такая же проблема возникнет
0
 Аватар для akalji
3 / 3 / 2
Регистрация: 10.03.2014
Сообщений: 51
11.11.2016, 20:07  [ТС]
edward_freedom, для VK CallBack API нужно вернуть Header "200 OK"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2016, 20:07
Помогаю со студенческими работами здесь

Один раз загрузить и много раз проиграть звук
sndPlaySound(OpenDialog1-&gt;FileName , SND_ASYNC); Эта функция каждый раз перед проигрыванием звука грузит его из файла. А есть ли функции,...

Функция вызывает сама себя 10 раз
Всем доброго времени суток, простите студента заочника, но я вынужден к вам обратиться за помощью. Мне в институте для зачета преподаватель...

Таймер вызывает событие только один раз
Доброго времени суток. Будтъте добры подскажите, затупил. Есть такой класс. Я его конструирую, потом вызываю BeginStart. В результате...

SetEvent вызывает каждый поток только раз
Добрый день.Никак не могу разобраться с синхронизацией потоков. Делаю некую имитацию Round Robin. Нужно чтоб, каждый поток отработал 3...

Скрипт вызывает ошибку и прерывает работу всех последующих скриптов
Подскажите. У меня вот этот скрипт вызывает ошибку в отладчике и прерывает работу всех следующих за ним сриптов (см рис). Это происходит,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru