Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Як написати чат-бота на PHP для спільноти ВКонтакте

  1. Підготовка серверної частини до підключення
  2. Налаштування спільноти ВКонтакте
  3. Налаштування callback API
  4. Налаштування типів подій
  5. Налаштування backend бота ВКонтакте
  6. Реалізація вітання при вступі до спільноти ВКонтакте
  7. Реалізація прощання з учасником після того, як він покинув співтовариство

Наша взаимовыгодная связь https://banwar.org/

На поточний момент більшість великих спільнот ВКонтакте вже мають ботів, актуальність цієї теми обумовлюється величезним попитом на цілодобову роботу додатка, оповіщення при вступі до спільноти і виході з нього, розсилку інформаційних повідомлень, саме бот спільноти ВКонтакте може вирішити ці завдання. У статті ми розглянемо рішення основних завдань, які часто виникають в будь-якому великому співтоваристві.

Підготовка серверної частини до підключення



Інструкція по підключенню докладно описана в чудовій документації для розробників ВКонтакте.
Розберемо її докладніше, для розміщення скрипта чат-бота ми повинні мати функціонуючий веб-сервер.
Для роботи з callback API ВКонтакте рекомендує використовувати протокол https, інструкцію з безоплатного отримання сертифіката cloudflare і настройки сервера ви зможете знайти в статті, яку можна знайти в пошуковій системі Google за запитом Безкоштовний SSL сертифікат CloudFlare.
Після закінчення настройки сервера ви повинні мати робочий web-сервер, на який ми завантажимо скрипт нашого бота.

Налаштування спільноти ВКонтакте


Генерація ключа доступу


Важливим моментом в роботі бота спільноти є відповіді на призначені для користувача повідомлення і різні події, для того, щоб ми могли взаємодіяти з користувачем від імені спільноти, нам необхідно створити спеціальний ключ. Для цього перейдемо у вкладку "Управління співтовариством".
Важливим моментом в роботі бота спільноти є відповіді на призначені для користувача повідомлення і різні події, для того, щоб ми могли взаємодіяти з користувачем від імені спільноти, нам необхідно створити спеціальний ключ
Далі спустимося в розділ "Робота з API" -> "Ключі доступу".

Для створення ключа необхідно натиснути "Створити ключ" і вибрати необхідні права, які ми надамо нашому боту.

У нашому випадку нам вистачить доступу до повідомлень співтовариства.

Збережемо даний ключ, він нам знадобиться під час налаштування backend.

Налаштування callback API


Тепер ми повинні пов'язати наш сервер і співтовариство, для цього ми повинні вказати дані нашого сервера і створити секретний ключ. Для цього нам необхідно перейти в розділ управління спільноти і спуститися у вкладку "Робота з API".
Тепер ми повинні пов'язати наш сервер і співтовариство, для цього ми повинні вказати дані нашого сервера і створити секретний ключ
Далі настає дуже важливий момент, нам необхідно ввести адресу нашого сервера і придумати секретний ключ, як ключ виступає будь-який рядок, а в якості адреси, відповідно, адреса до php скрипту на сервері.

Введемо секретний ключ і натискаємо «Зберегти», після ми повинні отримати відповідне повідомлення про успішну установку ключа. Кнопку «Підтвердити» навпроти поля з адресою серверу не натискаємо.

Заданий Вами секретний ключ буде передаватися з кожним повідомленням від сервера в окремому полі secret. Це дозволить Вам достовірно визначати, що повідомлення прийшло саме від нашого сервера.



Також ми повинні запам'ятати код, який повинен повернути сервер, запишіть його, він нам знадобиться під час налаштування backend.
Також ми повинні запам'ятати код, який повинен повернути сервер, запишіть його, він нам знадобиться під час налаштування backend

Налаштування типів подій


Важливим моментом в роботі бота спільноти, є відповіді на призначені для користувача повідомлення і різні події, для того, щоб ми могли взаємодіяти з користувачем від імені спільноти, нам необхідно вказати які саме події ми хочемо отримувати. Так як ми збираємося відслідковувати вхідні повідомлення, вступу в співтовариства і вихід з нього, то нам необхідно встановити відповідні галочки. Для цього перейдемо у вкладку "Управління співтовариством".
Важливим моментом в роботі бота спільноти, є відповіді на призначені для користувача повідомлення і різні події, для того, щоб ми могли взаємодіяти з користувачем від імені спільноти, нам необхідно вказати які саме події ми хочемо отримувати
Далі спустимося в розділ "Робота з API" -> "Типи подій".

Встановіть необхідні пункти в даному розділі.

Налаштування backend бота ВКонтакте


Наступним етапом ми повинні створити спеціальний скрипт, який будемо приймати запити від callback API вконтакте і певним чином реагувати на події. Створимо, наприклад, php-скрипт handler.php, адреса до цьому скрипту, після настройки backend, ми повинні вказати в настройках спільноти.
Зверніть увагу на значення наступних змінних:
$ ConfirmationToken $ token $ secretKey
У confirmationToken зберігається код, які сервер повинен повернути, в нашому випадку:
004eec27
token зберігає в собі ключ доступу, який ми генерували в розділі «Генерація ключа доступу»
secretKey ми задавали в розділі управління спільноти callback API. Підсумковий код виглядає наступним чином (handler.php):
<? Php if (! Isset ($ _ REQUEST)) {return; } // Рядок для підтвердження адреси сервера з налаштувань Callback API $ confirmationToken = '004eec27'; // Ключ доступу спільноти $ token = 'Ваш ключ'; // Secret key $ secretKey = 'testSecureKey'; // Отримуємо і декодуємо повідомлення $ data = json_decode (file_get_contents ( 'php: // input')); // перевіряємо secretKey if (strcmp ($ data-> secret, $ secretKey)! == 0 && strcmp ($ data-> type, 'confirmation')! == 0) return; // Перевіряємо, що знаходиться в полі "type" switch ($ data-> type) {// Якщо повідомлення про втрату чинності для підтвердження адреси сервера ... case 'confirmation': //...отправляем рядок для підтвердження адреси echo $ confirmationToken ; break; // Якщо це повідомлення про нове повідомлення ... case 'message_new': //...получаем id його автора $ userId = $ data-> object-> user_id; // потім за допомогою users.get отримуємо дані про автора $ userInfo = json_decode (file_get_contents ( "https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); // і витягаємо з відповіді його ім'я $ user_name = $ userInfo-> response [0] -> first_name; // За допомогою messages.send і токена спільноти відправляємо Вам відповідь $ request_params = array ( 'message' => "{$ user_name}, ваше повідомлення зареєстровано!". "Ми постараємося відповісти в найближчим часом.", 'User_id' => $ userId, '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); // Повертаємо "ok" сервера Callback API echo ( 'ok'); break; // Якщо це повідомлення про вступ до групи case 'group_join': //...получаем id нового учасника $ userId = $ data-> object-> user_id; // потім за допомогою users.get отримуємо дані про автора $ userInfo = json_decode (file_get_contents ( "https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); // і витягаємо з відповіді його ім'я $ user_name = $ userInfo-> response [0] -> first_name; // За допомогою messages.send і токена спільноти відправляємо Вам відповідь $ request_params = array ( 'message' => "Ласкаво просимо в наше співтовариство МГТУ ім. Баумана ІУ5 2016, {$ user_name}!". "Якщо у Вас виникнуть питання, то ви завжди можете звернутися до адміністраторів спільноти. "." Їх контакти можна знайти в відповідному розділі групи. "." Успіхів у навчанні! ", 'user_id' => $ userId, '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); // Повертаємо "ok" сервера Callback API echo ( 'ok'); break; }?>

Після того як ви завантажили код, ви повинні повернутися в розділ «Управління співтовариством» -> «Робота з API» -> «Callback API», ввести адресу до скрипта і натиснути «Підтвердити»
Наступним етапом ми повинні створити спеціальний скрипт, який будемо приймати запити від callback API вконтакте і певним чином реагувати на події
Після цього, конфігурація спільноти для роботи з ботом завершена, тепер, якщо ми відправимо повідомленням в співтовариство, ми отримаємо відповідь.


Реалізація вітання при вступі до спільноти ВКонтакте


На даному етапі ми вже маємо налаштований сервер і обробник бота, всі можливі події вказані в документації , Вона добре написана, рекомендую з нею ознайомитися.
На даному етапі ми вже маємо налаштований сервер і обробник бота, всі можливі події вказані в   документації   , Вона добре написана, рекомендую з нею ознайомитися
Ми будемо відловлювати подія group_join, для цього в операторі switch створимо новий розділ. Ми не будемо розглядати join_type докладно, так як у нас відкрита група, але ви можете обробляти цей параметр на ваш розсуд.
// Якщо це повідомлення про вступ до групи case 'group_join': //...получаем id нового учасника $ userId = $ data-> object-> user_id; // потім за допомогою users.get отримуємо дані про автора $ userInfo = json_decode (file_get_contents ( "https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); // і витягаємо з відповіді його ім'я $ user_name = $ userInfo-> response [0] -> first_name; // За допомогою messages.send і токена спільноти відправляємо Вам відповідь $ request_params = array ( 'message' => "Ласкаво просимо в наше співтовариство МГТУ ім. Баумана ІУ5 2016, {$ user_name}!". "Якщо у Вас виникнуть питання, то ви завжди можете звернутися до адміністраторів спільноти. "." Їх контакти можна знайти в відповідному розділі групи. "." Успіхів у навчанні! ", 'user_id' => $ userId, '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); // Повертаємо "ok" сервера Callback API echo ( 'ok'); break;


Повний код обробника бота ВКонтакте з функцією привітального повідомлення:
<? Php if (! Isset ($ _ REQUEST)) {return; } // Рядок для підтвердження адреси сервера з налаштувань Callback API $ confirmationToken = '004eec27'; // Ключ доступу спільноти $ token = 'Ваш ключ'; // Secret key $ secretKey = 'testSecureKey'; // Отримуємо і декодуємо повідомлення $ data = json_decode (file_get_contents ( 'php: // input')); // перевіряємо secretKey if (strcmp ($ data-> secret, $ secretKey)! == 0 && strcmp ($ data-> type, 'confirmation')! == 0) return; // Перевіряємо, що знаходиться в полі "type" switch ($ data-> type) {// Якщо повідомлення про втрату чинності для підтвердження адреси сервера ... case 'confirmation': //...отправляем рядок для підтвердження адреси echo $ confirmationToken ; break; // Якщо це повідомлення про нове повідомлення ... case 'message_new': //...получаем id його автора $ userId = $ data-> object-> user_id; // потім за допомогою users.get отримуємо дані про автора $ userInfo = json_decode (file_get_contents ( "https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); // і витягаємо з відповіді його ім'я $ user_name = $ userInfo-> response [0] -> first_name; // За допомогою messages.send і токена спільноти відправляємо Вам відповідь $ request_params = array ( 'message' => "{$ user_name}, ваше повідомлення зареєстровано!". "Ми постараємося відповісти в найближчим часом.", 'User_id' => $ userId, '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); // Повертаємо "ok" сервера Callback API echo ( 'ok'); break; // Якщо це повідомлення про вступ до групи case 'group_join': //...получаем id нового учасника $ userId = $ data-> object-> user_id; // потім за допомогою users.get отримуємо дані про автора $ userInfo = json_decode (file_get_contents ( "https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); // і витягаємо з відповіді його ім'я $ user_name = $ userInfo-> response [0] -> first_name; // За допомогою messages.send і токена спільноти відправляємо Вам відповідь $ request_params = array ( 'message' => "Ласкаво просимо в наше співтовариство МГТУ ім. Баумана ІУ5 2016, {$ user_name}!". "Якщо у Вас виникнуть питання, то ви завжди можете звернутися до адміністраторів спільноти. "." Їх контакти можна знайти в відповідному розділі групи. "." Успіхів у навчанні! ", 'user_id' => $ userId, '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); // Повертаємо "ok" сервера Callback API echo ( 'ok'); break; }?>

Реалізація прощання з учасником після того, як він покинув співтовариство


Реалізація ідентична, в конкретному випадку ми обробляємо group_leave
// Якщо це повідомлення про вихід з групи case 'group_leave': //...получаем id минулого учасника $ userId = $ data-> object-> user_id; // потім за допомогою users.get отримуємо дані про автора $ userInfo = json_decode (file_get_contents ( "https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); // і витягаємо з відповіді його ім'я $ user_name = $ userInfo-> response [0] -> first_name; // За допомогою messages.send і токена спільноти відправляємо Вам відповідь $ request_params = array ( 'message' => "{$ user_name}, нам дуже шкода прощатися з вами & # 128532;". "Ми завжди будемо чекати Вас в нашій затишній компанії. "." Якщо виникли питання - зв'яжіться з адміністратором співтовариства "." Костянтин - https://vk.com/kulakovkostya ", 'user_id' => $ userId, '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); // Повертаємо "ok" сервера Callback API echo ( 'ok'); break;

Повний лістинг коду:
<? Php if (! Isset ($ _ REQUEST)) {return; } // Рядок для підтвердження адреси сервера з налаштувань Callback API $ confirmationToken = '004eec27'; // Ключ доступу спільноти $ token = 'Ваш ключ'; // Secret key $ secretKey = 'testSecureKey'; // Отримуємо і декодуємо повідомлення $ data = json_decode (file_get_contents ( 'php: // input')); // перевіряємо secretKey if (strcmp ($ data-> secret, $ secretKey)! == 0 && strcmp ($ data-> type, 'confirmation')! == 0) return; // Перевіряємо, що знаходиться в полі "type" switch ($ data-> type) {// Якщо повідомлення про втрату чинності для підтвердження адреси сервера ... case 'confirmation': //...отправляем рядок для підтвердження адреси echo $ confirmationToken ; break; // Якщо це повідомлення про нове повідомлення ... case 'message_new': //...получаем id його автора $ userId = $ data-> object-> user_id; // потім за допомогою users.get отримуємо дані про автора $ userInfo = json_decode (file_get_contents ( "https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); // і витягаємо з відповіді його ім'я $ user_name = $ userInfo-> response [0] -> first_name; // За допомогою messages.send і токена спільноти відправляємо Вам відповідь $ request_params = array ( 'message' => "{$ user_name}, ваше повідомлення зареєстровано!". "Ми постараємося відповісти в найближчим часом.", 'User_id' => $ userId, '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); // Повертаємо "ok" сервера Callback API echo ( 'ok'); break; // Якщо це повідомлення про вступ до групи case 'group_join': //...получаем id нового учасника $ userId = $ data-> object-> user_id; // потім за допомогою users.get отримуємо дані про автора $ userInfo = json_decode (file_get_contents ( "https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); // і витягаємо з відповіді його ім'я $ user_name = $ userInfo-> response [0] -> first_name; // За допомогою messages.send і токена спільноти відправляємо Вам відповідь $ request_params = array ( 'message' => "Ласкаво просимо в наше співтовариство МГТУ ім. Баумана ІУ5 2016, {$ user_name}!". "Якщо у Вас виникнуть питання, то ви завжди можете звернутися до адміністраторів спільноти. "." Їх контакти можна знайти в відповідному розділі групи. "." Успіхів у навчанні! ", 'user_id' => $ userId, '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); // Повертаємо "ok" сервера Callback API echo ( 'ok'); break; // Якщо це повідомлення про вихід з групи case 'group_leave': //...получаем id минулого учасника $ userId = $ data-> object-> user_id; // потім за допомогою users.get отримуємо дані про автора $ userInfo = json_decode (file_get_contents ( "https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); // і витягаємо з відповіді його ім'я $ user_name = $ userInfo-> response [0] -> first_name; // За допомогою messages.send і токена спільноти відправляємо Вам відповідь $ request_params = array ( 'message' => "{$ user_name}, нам дуже шкода прощатися з вами & # 128532;". "Ми завжди будемо чекати Вас в нашій затишній компанії. "." Якщо виникли питання - зв'яжіться з адміністратором співтовариства "." Костянтин - https://vk.com/kulakovkostya ", 'user_id' => $ userId, '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); // Повертаємо "ok" сервера Callback API echo ( 'ok'); break; }?>

джерело: Хабрахабр

Get?
Send?
Get?
Get?
Get?
Send?
Get?
Get?
Get?
Send?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: