· 6 years ago · Oct 20, 2019, 06:22 PM
1<?php
2
3if (!isset($_REQUEST)) {
4 return;
5}
6
7//Строка для подтверждения адреса сервера из настроек Callback API
8$confirmationToken = 'ok token';
9
10//Ключ доступа сообщества
11$token = ' token ';
12
13// Secret key
14$secretKey = ' mega key ';
15
16//Получаем и декодируем уведомление
17$data = json_decode(file_get_contents('php://input'));
18
19// проверяем secretKey
20if (strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, 'confirmation') !== 0)
21 return;
22
23//Проверяем, что находится в поле "type"
24switch ($data->type) {
25 //Если это уведомление для подтверждения адреса сервера...
26 case 'confirmation':
27 //...отправляем строку для подтверждения адреса
28 echo $confirmationToken;
29 break;
30
31 //Если это уведомление о новом сообщении...
32 case 'message_new':
33 //...получаем id его автора
34 $userId = $data->object->user_id;
35 //затем с помощью users.get получаем данные об авторе
36 $userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}&v=5.50"));
37
38 //и извлекаем из ответа его имя
39 $user_name = $userInfo->response[0]->first_name;
40
41 //С помощью messages.send и токена сообщества отправляем ответное сообщение
42 $request_params = array(
43 'message' => "{$user_name}, ваше сообщение зарегистрировано!<br>" .
44 "Мы постараемся ответить в ближайшее время.",
45 'user_id' => $userId,
46 'access_token' => $token,
47 'v' => '5.50'
48 );
49
50 $get_params = http_build_query($request_params);
51
52 file_get_contents('https://api.vk.com/method/messages.send?' . $get_params);
53
54 //Возвращаем "ok" серверу Callback API
55 echo('ok');
56
57 break;
58
59 // Если это уведомление о вступлении в группу
60 case 'group_join':
61 //...получаем id нового участника
62 $userId = $data->object->user_id;
63
64 //затем с помощью users.get получаем данные об авторе
65 $userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}&v=5.50"));
66
67 //и извлекаем из ответа его имя
68 $user_name = $userInfo->response[0]->first_name;
69
70 //С помощью messages.send и токена сообщества отправляем ответное сообщение
71 $request_params = array(
72 'message' => "Добро пожаловать, {$user_name}!<br>" .
73 "Если у Вас возникнут вопросы, то вы всегда можете обратиться к администраторам сообщества.<br>" .
74 "Их контакты можно найти в соответсвующем разделе группы.<br>" .
75 "Успехов!",
76 'user_id' => $userId,
77 'access_token' => $token,
78 'v' => '5.0'
79 );
80 var_dump($userinfo);
81 $get_params = http_build_query($request_params);
82
83 file_get_contents('https://api.vk.com/method/messages.send?' . $get_params);
84
85 //Возвращаем "ok" серверу Callback API
86 echo('ok');
87
88 break;
89
90 // Если это уведомление о выходе из группы
91 case 'group_leave':
92 //...получаем id ушедшего участника
93 $userId = $data->object->user_id;
94
95 //затем с помощью users.get получаем данные об авторе
96 $userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0"));
97
98 //и извлекаем из ответа его имя
99 $user_name = $userInfo->response[0]->first_name;
100
101 //С помощью messages.send и токена сообщества отправляем ответное сообщение
102 $request_params = array(
103 'message' => "{$user_name}, нам очень жаль прощаться с вами ?<br>" .
104 "Мы всегда будем ждать Вас в нашей уютной компании.<br>" .
105 "Если возникли вопросы - свяжитесь с администратором сообщества<br>" ,
106 'user_id' => $userId,
107 'access_token' => $token,
108 'v' => '5.50'
109 );
110
111 $get_params = http_build_query($request_params);
112
113 file_get_contents('https://api.vk.com/method/messages.send?' . $get_params);
114
115 //Возвращаем "ok" серверу Callback API
116 echo('ok');
117
118 break;
119}
120?>