Cómo hacer que un bot de VKontakte responda a los mensajes. Creando un chat bot con comandos

Continuamos la serie de artículos dedicados a escribir chatbots para redes sociales en PHP. La última vez creamos un bot para Telegram, y esta vez te diré cómo hacer un bot similar para VKontakte. De cara al futuro, diré que hoy no usaremos el SDK PHP de VKshny y nuestro bot constará de un solo archivo (hablaremos del SDK en otro momento).

Al igual que en el caso del bot de Telegram, necesitaremos conocimientos mínimos de programación en PHP, hosting y un certificado SSL. ¿Estás listo? ¡Empecemos!

¿Qué será capaz de hacer nuestro bot?

Las capacidades del bot están limitadas únicamente por la imaginación del programador (afortunadamente, la API VK permite mucho), por lo que, por ejemplo, nuestro bot solo podrá hacer las cosas más simples, a saber:

  1. Enviar notificaciones al unirse a la comunidad;
  2. Responder si el usuario envió un DM al chat grupal;
  3. Enviar una notificación cuando un usuario abandona un grupo.

Empecemos a crear un bot.

Antes de comenzar a escribir código, creemos claves de acceso para nuestro bot. Para hacer esto, vaya a Gestión de la comunidad, seleccione "Trabajar con API" a la derecha y haga clic en "Crear una clave".

En la ventana emergente, marque las casillas de derechos de acceso. En nuestro caso, todo lo que necesitas hacer es marcar la casilla junto a " Permitir que una aplicación acceda a los mensajes de la comunidad“, pero tenga en cuenta que para los robots más geniales vale la pena marcar las casillas junto a todos los elementos a la vez. Confirme la acción haciendo clic en el botón "Crear".

Ahora vayamos a la pestaña API de devolución de llamada->Configuración del servidor. Aquí nos interesan 3 cosas a la vez: Dirección, Cadena que debe devolver el servidor y Clave secreta. Nos saltaremos la dirección por ahora (en general, puede completarla de inmediato si ha decidido dónde se ubicará el archivo principal de nuestro php bot, pero como el archivo en sí aún no se ha creado, VK lo jurará , porque inmediatamente después de ingresar la URL, la red social envía una solicitud POST para verificar la disponibilidad del bot en la dirección especificada). Copiemos el valor opuesto a "La cadena que el servidor debe devolver" (confirmationToken). (en nuestro caso es tt32e1. Se le ocurrirá una clave secreta. No olvide hacer clic en "Guardar".


Entonces, en la salida deberíamos tener 3 cosas escritas en alguna parte:

  1. token de confirmación
  2. simbólico
  3. clave secreta

Ahora puedes empezar a escribir código PHP.

Cómo crear un bot en VK (codificación en PHP)

Comencemos a escribir el archivo para nuestro bot VKontakte. Llamémoslo vk_bot.php. Permítanme recordarles que el código debe estar escrito en codificación UTF-8 (sin BOOM).

Definamos las constantes:

si (!isset($_REQUEST)) (regreso;)
// Cadena que el servidor debe devolver (Ver API de devolución de llamada->Configuración del servidor)
$token de confirmación = "tt32e1";
// Clave de acceso a la comunidad (la cadena larga que obtuviste al hacer clic en "crear clave")
$token = "habrá muchas letras y números";
// Clave secreta. (Establecido en API de devolución de llamada->Configuración del servidor)
$secretKey = "testKeyMyBot";

Ahora verifiquemos los datos recibidos:

// Recibir y decodificar la notificación
$datos = json_decode(file_get_contents("php://input"));
// comprobar clave secreta
if (strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, "confirmación") !== 0) (return;)

Usando switch comprobaremos qué hay en el campo “tipo” (qué evento se activó y, dependiendo de esto, generaremos una respuesta).

//Comprueba lo que hay en el campo "tipo"
cambiar ($datos->tipo) (
// Solicitud de confirmación de la dirección del servidor (enviada por VK)
caso "confirmación":
echo $token de confirmación; // envía una cadena para confirmar la dirección
romper;
// Si se trata de una notificación de mensaje nuevo...
caso "mensaje_nuevo":

$userId = $datos->objeto->user_id;



$user_name = $userInfo->respuesta->first_name;

$request_params = matriz(
"message" => "($user_name), ¡Tu mensaje ha sido recibido!
El administrador del grupo responderá pronto.",
"user_id" => $userId,
"token_acceso" => $token,
"v" => "5.0"
);



romper;
}

Una pequeña explicación:

Cuando un usuario envía un mensaje a un chat con un grupo, se activa un evento. El evento es un JSON con la siguiente estructura:

("tipo":<тип события>, "objeto":<объект, инициировавший событие>, "id_grupo": }

Dependiendo de lo que recibimos en tipo, podemos entender qué estructura tendrá el objeto. Para obtener una lista completa de posibles eventos, consulte certificado oficial de VKontakte.

Entonces, por el momento le hemos enseñado a nuestro bot 2 cosas: a responder correctamente al robot VK a una solicitud de verificación, y también a enviar automáticamente una notificación al usuario si envía algún texto.

Ahora puede cargar nuestro archivo en el servidor y completar la dirección en la configuración (si no lo ha hecho antes).

Además, debe ir a la pestaña "Tipos de eventos" y marcar la casilla junto a "Mensajes entrantes".

Ahora podemos comprobar el trabajo:

Como vemos, todo está funcionando. De hecho, ya logramos crear un bot en VK. Incrementémoslo un poco.

Agreguemos 2 condiciones más a la construcción del caso. Primero, enviará notificaciones si una persona se ha unido a nuestro grupo:

// Evento desencadenado: una persona se unió al grupo
caso "unir_grupo":
//obtenemos la identificación del autor del mensaje
$userId = $datos->objeto->user_id;
// a través de users.get obtenemos datos sobre el autor
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids=($userId)&v=5.0"));
// Extrae el nombre del remitente
$user_name = $userInfo->respuesta->first_name;
// A través de message.send usando el token comunitario enviamos una respuesta
$request_params = matriz(
"mensaje" => "¡Bienvenido al grupo, ($user_name)!",
"user_id" => $userId,
"token_acceso" => $token,
"v" => "5.0"
);
$get_params = http_build_query($request_params);
file_get_contents("https://api.vk.com/method/messages.send?". $get_params);
eco("bien"); // Devuelve "ok" al servidor API de devolución de llamada
romper;

La segunda es una notificación similar, pero sólo en el momento en que una persona abandona la comunidad:

// Evento activado: una persona abandonó el grupo
caso "group_leave":
//obtenemos la identificación del autor del mensaje
$userId = $datos->objeto->user_id;
// a través de users.get obtenemos datos sobre el autor
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids=($userId)&v=5.0"));
// Extrae el nombre del remitente
$user_name = $userInfo->respuesta->first_name;
// A través de message.send usando el token comunitario enviamos una respuesta
$request_params = matriz(
"message" => "($user_name), ¡lamentamos mucho que hayas abandonado nuestro grupo!",
"user_id" => $userId,
"token_acceso" => $token,
"v" => "5.0"
);
$get_params = http_build_query($request_params);
file_get_contents("https://api.vk.com/method/messages.send?". $get_params);
eco("bien"); // Devuelve "ok" al servidor API de devolución de llamada
romper;

No olvidemos agregar las casillas de verificación correspondientes junto a los eventos que necesitamos en la configuración del grupo:

Lo que los bots no deberían hacer

No estaría de más citar una de las secciones de la ayuda de VK:

Ahora sabes cómo crear tu propio bot en VK. fuentes de lecciones Poder . La próxima vez hablaremos sobre cómo trabajar con PHP SDK para bots VK. Si tienes alguna duda, pregunta en los comentarios. Y no olvides volver a publicar y darle me gusta a este artículo)

A partir de artículos anteriores, creamos un guión simple para la correspondencia. Se revisaron las capacidades básicas. Esta vez escribiremos un chatbot con comandos. Implementamos los siguientes comandos:

  • ciudad[nombre de la ciudad]. Este comando especifica la ciudad del interlocutor, el bot la recordará y la guardará en un archivo. Estos datos estarán disponibles incluso después de reiniciar el programa.
  • clima. El robot envía la temperatura actual en la ciudad del interlocutor.
  • atascos de tráfico. El bot recibe una captura de pantalla de Yandex.Maps con las condiciones del tráfico y envía la imagen.
  • eventos. El bot envía una lista de eventos en la ciudad del interlocutor.
  • vino a correo electrónico. El bot guarda el correo electrónico del interlocutor en un archivo.

Ciudad

Almacenaremos la ciudad del interlocutor en un archivo de texto. Se crea una carpeta separada para cada script en la que puede almacenar archivos arbitrarios que sobrevivirán al reinicio del programa. Se creará una carpeta junto al script. Veamos un fragmento de código para procesar el comando. ciudad.

Var cityFile = perfil + "__" + contacto;

Almacenamos el nombre del archivo en la variable cityFile. A continuación, utilizando la llamada al método tools.writeToFile(file, data), guardamos la ciudad en un archivo. Tenga en cuenta que no es seguro utilizar la función writeToFile si varios cuestionarios ejecutan el mismo script y acceden al mismo archivo. Por lo tanto, utilizamos la identificación del perfil en el nombre del archivo para eliminar dichos conflictos.

Para leer desde un archivo, utilice el método tools.readFromFile(file). Esta función lee el archivo completo y devuelve el contenido. Si el archivo no existe, la función devuelve una cadena vacía.

Var ciudad = herramientas.readFromFile(cityFile);

if (city.isEmpty()) (retorna "No conozco tu ciudad:("; )

Seleccionar un nombre de archivo

Usamos un archivo de texto para almacenar la ciudad del interlocutor. Como ya se ha indicado, el nombre del archivo debe elegirse con cuidado. Para que varios perfiles no accedan al mismo archivo.

Var perfil = hist.localContact().getID().toString();

var contacto = hist.externalContact().getID().toString();

var cityFile = perfil + "__" + contacto;

Aquí obtenemos datos sobre el perfil en el bot a través del método hist.localContact(). A continuación, utilizando el método getID(), obtenemos el identificador interno del perfil (se parece a perfil_www.vk.com_+79129192508). Del mismo modo, obtenemos el ID del interlocutor (id361493719). Como resultado, en la variable cityFile obtenemos perfil_www.vk.com_+79129192508__id361493719. Dado que el nombre contiene el identificador del perfil agregado al bot, otro perfil no podrá generar el mismo nombre de archivo y no habrá conflictos.

Clima

Para obtener datos meteorológicos utilizaremos el servicio openweathermap.org. Debe registrarse y recibir una clave gratuita para acceder a la API. A continuación, envía una solicitud HTTP con el nombre de la ciudad y recibe una respuesta JSON con datos.

Función getWeather(ciudad, herramientas) ( ciudad = ciudad.replace(" ", "%20"); var apiKey = "43599b515694631087a103907284116d"; var url = "http://api.openweathermap.org/data/2.5/weather? q=" + ciudad + "&appid=" + apiKey + "&units=metric"; return JSON.parse(tools.httpGet(url)); )

Función getTraffic(ciudad, archivo, registro, herramientas) ( log.info("Obteniendo coordenadas para la ciudad " + ciudad); ciudad = ciudad.replace(" ", "%20"); var url = "https://geocode -maps.yandex.ru/1.x/?geocode=" + ciudad + "&format=json"; var resp = JSON.parse(tools.httpGet(url)); var coord = resp["respuesta"][" GeoObjectCollection"]["featureMember"]["GeoObject"]["Point"]["pos"].replace(" ", ","); log.info("Las coordenadas son: " + coord + ", obteniendo tráfico pic"); var url = "https://static-maps.yandex.ru/1.x/?ll=" + coord + "&spn=0.1,0.1&l=map,trf"; return tools.download(url , archivo)

El servicio Yandex.Maps devuelve datos de tráfico por coordenadas geográficas. Solo tenemos el nombre de cadena de la ciudad. Por lo tanto, primero enviamos una solicitud HTTP para recibir datos de la ciudad a otro servicio. Entre otras cosas, la respuesta contiene datos de coordenadas. Usamos la coordenada para otra solicitud HTTP. Tenga en cuenta que para obtener una imagen de los atascos utilizamos el método tools.download(url, archivo). Este método también realiza una solicitud HTTP GET, pero guarda el resultado binario en un archivo. El método obtiene la URL y el nombre del archivo para guardar la respuesta. Tenga en cuenta que el nombre del archivo debe contener solo el nombre, sin rutas. El método devuelve la ruta completa a este archivo.

Eventos

Para recibir eventos en una ciudad específica, usaremos la API timepad.ru.

Función getEvents(ciudad, herramientas) ( ciudad = ciudad.replace(" ", "%20"); var url = "https://api.timepad.ru/v1/events.json?limit=10&skip=0&cities=" + ciudad + "&fields=ubicación&sort=+starts_at" return JSON.parse(tools.httpGet(url));

Envíanos un correo electrónico

Usemos el método tools.appendToFile(archivo, línea). El método agrega la línea al archivo del archivo (solo el nombre del archivo, sin rutas). Este método es seguro de utilizar desde varios perfiles con el mismo nombre de archivo. De esta forma resulta conveniente recopilar algunos mensajes o fragmentos de mensajes de los usuarios en un solo archivo. En este script recopilaremos las direcciones de correo electrónico de los usuarios.

If (content.startsWith("llegó por correo electrónico")) ( var email = content.substring(16); tools.appendToFile("correos electrónicos", correo electrónico); )

guión completo

Aquí está el código de secuencia de comandos completo.

Función getTemplates() ( return ; ) función getWeather(ciudad, herramientas) ( ciudad = ciudad.replace(" ", "%20"); var apiKey = "43599b515694631087a103907284116d"; var url = "http://api.openweathermap. org/data/2.5/weather?q=" + ciudad + "&appid=" + apiKey + "&units=metric"; return JSON.parse(tools.httpGet(url)); ) función getTraffic(ciudad, archivo, registro, herramientas) ( log.info("Obteniendo coordenadas para la ciudad " + ciudad); ciudad = ciudad.replace(" ", "%20"); var url = "https://geocode-maps.yandex.ru/1. x/?geocode=" + ciudad + "&format=json"; var resp = JSON.parse(tools.httpGet(url)); var coord = resp["response"]["GeoObjectCollection"]["featureMember"][ "GeoObject"]["Point"]["pos"].replace(" ", ","); log.info("Las coordenadas son: " + coord + ", obteniendo imagen de tráfico"); maps.yandex.ru/1.x/?ll=" + coord + "&spn=0.1,0.1&l=map,trf"; return tools.download(url, archivo); ) función getEvents(ciudad, herramientas) ( ciudad = ciudad.replace(" ", "%20"); var url = "https://api.timepad.ru/v1/events.json?limit=10&skip=0&cities=" + ciudad + " &fields=ubicación&sort=+ comienza_en";< events.length; ++i) { var dateTime = events[i]["starts_at"]; var dateTimeStr = dateTime.substring(0, 10) + " " + dateTime.substring(11, 17); var name = events[i]["name"]; result += (i + 1) + ". " + dateTimeStr + " " + name + "\n"; } return result; } return ""; } function getAnswer(hist, log, tools) { var profile = hist.localContact().getID().toString(); var contact = hist.externalContact().getID().toString(); var toReply = hist.unansweredMessages(); var result = ""; for(var i = 0; i < toReply.size() ; ++i) { var message = toReply.get(i); var content = message.content().toLowerCase(); var dup = false; for(var j = 0; j < i && !dup; ++j) { dup = content.equals(toReply.get(j).content().toLowerCase()); } if (!dup) { result += handle(content, profile, contact, log, tools) + " "; } } return result; }

ejemplo de trabajo

¿Qué más puedes aprender de la historia?

Del historial de correspondencia del guión se puede obtener información adicional sobre el perfil y el interlocutor. A saber.

Continuamos la serie de artículos dedicados a escribir chatbots para redes sociales en PHP. La última vez creamos un bot para Telegram, y esta vez te diré cómo hacer un bot similar para VKontakte. De cara al futuro, diré que hoy no usaremos el SDK PHP de VKshny y nuestro bot constará de un solo archivo (hablaremos del SDK en otro momento).

Al igual que en el caso del bot de Telegram, necesitaremos conocimientos mínimos de programación en PHP, hosting y un certificado SSL. ¿Estás listo? ¡Empecemos!

¿Qué será capaz de hacer nuestro bot?

Las capacidades del bot están limitadas únicamente por la imaginación del programador (afortunadamente, la API VK permite mucho), por lo que, por ejemplo, nuestro bot solo podrá hacer las cosas más simples, a saber:

  1. Enviar notificaciones al unirse a la comunidad;
  2. Responder si el usuario envió un DM al chat grupal;
  3. Enviar una notificación cuando un usuario abandona un grupo.

Empecemos a crear un bot.

Antes de comenzar a escribir código, creemos claves de acceso para nuestro bot. Para hacer esto, vaya a Gestión de la comunidad, seleccione "Trabajar con API" a la derecha y haga clic en "Crear una clave".

En la ventana emergente, marque las casillas de derechos de acceso. En nuestro caso, todo lo que necesitas hacer es marcar la casilla junto a " Permitir que una aplicación acceda a los mensajes de la comunidad“, pero tenga en cuenta que para los robots más geniales vale la pena marcar las casillas junto a todos los elementos a la vez. Confirme la acción haciendo clic en el botón "Crear".

Ahora vayamos a la pestaña API de devolución de llamada->Configuración del servidor. Aquí nos interesan 3 cosas a la vez: Dirección, Cadena que debe devolver el servidor y Clave secreta. Nos saltaremos la dirección por ahora (en general, puede completarla de inmediato si ha decidido dónde se ubicará el archivo principal de nuestro php bot, pero como el archivo en sí aún no se ha creado, VK lo jurará , porque inmediatamente después de ingresar la URL, la red social envía una solicitud POST para verificar la disponibilidad del bot en la dirección especificada). Copiemos el valor opuesto a "La cadena que el servidor debe devolver" (confirmationToken). (en nuestro caso es tt32e1. Se le ocurrirá una clave secreta. No olvide hacer clic en "Guardar".

Entonces, en la salida deberíamos tener 3 cosas escritas en alguna parte:

  1. token de confirmación
  2. simbólico
  3. clave secreta

Ahora puedes empezar a escribir código PHP.

Cómo crear un bot en VK (codificación en PHP)

Comencemos a escribir el archivo para nuestro bot VKontakte. Llamémoslo vk_bot.php. Permítanme recordarles que el código debe estar escrito en codificación UTF-8 (sin BOOM).

Definamos las constantes:

si (!isset($_REQUEST)) (regreso;)
// Cadena que el servidor debe devolver (Ver API de devolución de llamada->Configuración del servidor)
$token de confirmación = "tt32e1";
// Clave de acceso a la comunidad (la cadena larga que obtuviste al hacer clic en "crear clave")
$token = "habrá muchas letras y números";
// Clave secreta. (Establecido en API de devolución de llamada->Configuración del servidor)
$secretKey = "testKeyMyBot";

Ahora verifiquemos los datos recibidos:

// Recibir y decodificar la notificación
$datos = json_decode(file_get_contents("php://input"));
// comprobar clave secreta
if (strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, "confirmación") !== 0) (return;)

Usando switch comprobaremos qué hay en el campo “tipo” (qué evento se activó y, dependiendo de esto, generaremos una respuesta).

//Comprueba lo que hay en el campo "tipo"
cambiar ($datos->tipo) (
// Solicitud de confirmación de la dirección del servidor (enviada por VK)
caso "confirmación":
echo $token de confirmación; // envía una cadena para confirmar la dirección
romper;
// Si se trata de una notificación de mensaje nuevo...
caso "mensaje_nuevo":

$userId = $datos->objeto->user_id;



$user_name = $userInfo->respuesta->first_name;

$request_params = matriz(
"message" => "($user_name), ¡Tu mensaje ha sido recibido!
El administrador del grupo responderá pronto.",
"user_id" => $userId,
"token_acceso" => $token,
"v" => "5.0"
);



romper;
}

Una pequeña explicación:

Cuando un usuario envía un mensaje a un chat con un grupo, se activa un evento. El evento es un JSON con la siguiente estructura:

("tipo":<тип события>, "objeto":<объект, инициировавший событие>, "id_grupo": }

Dependiendo de lo que recibimos en tipo, podemos entender qué estructura tendrá el objeto. Para obtener una lista completa de posibles eventos, consulte la ayuda oficial de VKontakte.

Entonces, por el momento le hemos enseñado a nuestro bot 2 cosas: a responder correctamente al robot VK a una solicitud de verificación, y también a enviar automáticamente una notificación al usuario si envía algún texto.

Ahora puede cargar nuestro archivo en el servidor y completar la dirección en la configuración (si no lo ha hecho antes).

Además, debe ir a la pestaña "Tipos de eventos" y marcar la casilla junto a "Mensajes entrantes".

Ahora podemos comprobar el trabajo:

Como vemos, todo está funcionando. De hecho, ya logramos crear un bot en VK. Incrementémoslo un poco.

Agreguemos 2 condiciones más a la construcción del caso. Primero, enviará notificaciones si una persona se ha unido a nuestro grupo:

// Evento desencadenado: una persona se unió al grupo
caso "unir_grupo":
//obtenemos la identificación del autor del mensaje
$userId = $datos->objeto->user_id;
// a través de users.get obtenemos datos sobre el autor
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids=($userId)&v=5.0"));
// Extrae el nombre del remitente
$user_name = $userInfo->respuesta->first_name;
// A través de message.send usando el token comunitario enviamos una respuesta
$request_params = matriz(
"mensaje" => "¡Bienvenido al grupo, ($user_name)!",
"user_id" => $userId,
"token_acceso" => $token,
"v" => "5.0"
);
$get_params = http_build_query($request_params);
file_get_contents("https://api.vk.com/method/messages.send?". $get_params);
eco("bien"); // Devuelve "ok" al servidor API de devolución de llamada
romper;

La segunda es una notificación similar, pero sólo en el momento en que una persona abandona la comunidad:

// Evento activado: una persona abandonó el grupo
caso "group_leave":
//obtenemos la identificación del autor del mensaje
$userId = $datos->objeto->user_id;
// a través de users.get obtenemos datos sobre el autor
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids=($userId)&v=5.0"));
// Extrae el nombre del remitente
$user_name = $userInfo->respuesta->first_name;
// A través de message.send usando el token comunitario enviamos una respuesta
$request_params = matriz(
"message" => "($user_name), ¡lamentamos mucho que hayas abandonado nuestro grupo!",
"user_id" => $userId,
"token_acceso" => $token,
"v" => "5.0"
);
$get_params = http_build_query($request_params);
file_get_contents("https://api.vk.com/method/messages.send?". $get_params);
eco("bien"); // Devuelve "ok" al servidor API de devolución de llamada
romper;

No olvidemos agregar las casillas de verificación correspondientes junto a los eventos que necesitamos en la configuración del grupo:

Lo que los bots no deberían hacer

No estaría de más citar una de las secciones de la ayuda de VK:

Ahora sabes cómo crear tu propio bot en VK. fuentes de lecciones se puede descargar aquí. La próxima vez hablaremos sobre cómo trabajar con PHP SDK para bots VK. Si tienes alguna duda, pregunta en los comentarios. Y no olvides volver a publicar y darle me gusta a este artículo)

Desafortunadamente, por el momento no existen buenas bibliotecas de Python2 para crear rápidamente un chatbot. A continuación mostraré lo fácil que es escribir un chatbot primitivo para VK usando la API de VK.


El artículo fue escrito para principiantes para mostrar que no hay nada difícil en escribir bots en Python.

Autorización

Necesitaremos la biblioteca vk_api. Puede iniciar sesión en VK de dos maneras:
- Como usuario
- Como comunidad


En el primer caso, deberás introducir tu nombre de usuario y contraseña. En el segundo caso, debes habilitar "Mensajes de la comunidad" en el grupo y crear una clave de acceso API:





importar hora importar vk_api vk = vk_api.VkApi(login = "login", contraseña = "contraseña") #vk_api.VkApi(token = "a02d...e83fd") #Iniciar sesión como comunidad vk.auth()

enviando mensajes

Ahora escribamos una función corta que envíe un mensaje a la persona seleccionada.


PD La comunidad sólo puede enviar mensajes a usuarios publicados anteriormente.


def write_msg(user_id, s): vk.method("messages.send", ("user_id":user_id,"message":s))

En vk.method podemos llamar a cualquier método desde API VK y pasar parámetros como un diccionario.


En este caso llamamos al método mensajes.enviar y pase la identificación de usuario y el texto del mensaje como parámetros.

Recibir mensajes

¡Excelente! Hemos aprendido a enviar mensajes, sólo nos falta aprender a recibirlos. Para esto necesitamos un método mensajes.obtener.


Algunos parámetros a los que prestar atención:


1) salida: si este parámetro es igual a 1, el servidor devolverá los mensajes salientes.
2) contar: la cantidad de mensajes que deben recibirse.
3) time_offset: el tiempo máximo que ha pasado desde el momento en que se envió el mensaje hasta el momento actual en segundos.
4) last_message_id: identificador del mensaje recibido antes del que debe devolverse en último lugar (siempre que no se hayan recibido más de un número de mensajes después del mismo)


valores = ("out": 0, "count": 100, "time_offset": 60) vk.method("messages.get", valores)

En nuestro caso, este método devolverá todos los mensajes recibidos durante los últimos 60 segundos, si por supuesto hubo menos de 100, y si son más, entonces los últimos 100.


Como resultado, obtenemos una lista de elementos:


(u"count": 3441, u"items": [(u"body": u"\u041f\u0438\u0448\u0435\u043c \u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0432\u043a !", u"fecha": 1491934484, u"id": 7387, u"out": 0, u"read_state": 0, u"title": u" ... ", u"user_id": 23107592) , (u"cuerpo": u"\u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440!", u"fecha": 1491934479, u"id": 7386, u"fuera" : 0, u"read_state": 0, u"title": u" ... ", u"user_id": 23107592)])

Para explicarlo en palabras sencillas, los elementos son los que se pueden resaltar en el diálogo.



El acorde final, hacemos un ciclo eterno, donde responderemos a cada mensaje con un “¡Hola, Habr!”


mientras que Verdadero: respuesta = vk.method("messages.get", valores) si respuesta["items"]: valores["last_message_id"] = respuesta["items"]["id"] para el elemento en respuesta["items" "]: write_msg(item,u"¡Hola, Habr!") time.sleep(1)

El chatbot está listo.


PD Recordamos el parámetro last_message_id para que la próxima vez procesemos solo mensajes nuevos.


código completo

# -*- codificación: utf-8 -*- importar tiempo importar vk_api vk = vk_api.VkApi(login = "iniciar sesión", contraseña = "contraseña") #vk_api.VkApi(token = "a02d...e83fd") # Inicie sesión como comunidad vk.auth() valores = ("out": 0,"count": 100,"time_offset": 60) def write_msg(user_id, s): vk.method("messages.send" , ("user_id":user_id,"message":s)) mientras que Verdadero: respuesta = vk.method("messages.get", valores) si respuesta["elementos"]: valores["last_message_id"] = respuesta[" items"][ "id"] para el item en respuesta["items"]: write_msg(item,u"¡Hola, Habr!") time.sleep(1)


Resultó ser 17 líneas de código. ¡Buena suerte!


ACTUALIZACIÓN 17/09/18:
Desafortunadamente, en la nueva versión (5.80) de la API VK, el método "messages.get" se eliminó y este artículo perdió su relevancia. Ahora usa el sistema longpoll para crear bots. Puede encontrar un ejemplo en el módulo vk_api para Python.

El uso masivo y la popularización de los bots en la red social VK inspirará a todos los administradores de cualquier red social a querer utilizar un programa de bot similar entre su público. Al mismo tiempo, no todos saben cómo instalarlo, e incluso después de leer muchos materiales para encontrar explicaciones sobre cómo implementar lo que desean, no todos comprenderán de inmediato la secuencia de acciones necesarias para crear un bot VK. En esta revisión, todos los administradores encontrarán formas de crear un bot en grupos VK y aprenderán a utilizar las herramientas adecuadas.

Navegación rápida:

Cómo hacer un robot VK

Si está involucrado en grupos VK, probablemente sepa que un bot VK es un programa que le ayuda a automatizar cualquier manipulación. En nuestro caso, consideraremos un bot conectado a la comunidad VKontakte, que enviará correos idénticos y responderá a los mensajes de los visitantes. Además, podrás jugar con él a varios juegos interactivos, te dará recomendaciones sobre música o vídeos, te animará con una anécdota, etc. En secciones posteriores veremos cómo se puede crear un bot para páginas públicas sobre diversos temas en una de las redes sociales más populares actualmente: Vkontakte.

¿Qué es un bot en VK?

En primer lugar, debes considerar qué es un bot. Esta sección está dedicada específicamente a las características del propio bot. Trabajar en redes sociales, incluido VKontakte, es un trabajo duro que requiere una gran inversión de dinero, tiempo y esfuerzo. Hoy en día, casi todos los emprendedores acuden a las redes sociales sin darse cuenta de cómo funciona todo allí, pero, al fin y al cabo, es precisamente gracias a acciones ágiles y bien planificadas en grupos que la gente “picotea” todo tipo de ofertas. Averigüemos cómo un bot para un grupo VK nos ayudará en una tarea tan difícil como promover una comunidad.

De hecho, es muy sencillo explicar qué es un “Bot”. En las redes sociales, un bot es una persona inexistente que en realidad simplemente no existe. Un bot puede considerarse un . También se les llama comúnmente “almas muertas”, como en la famosa historia de Gogol, personas inexistentes que figuran en algunas estructuras. En nuestro caso se investigarán las falsificaciones en la red social VK. Visualización "en vivo" del "bot"

Puede imaginarse en forma de perfil a aquellos ciudadanos que en realidad no existen, o estas son páginas abandonadas hace mucho tiempo de usuarios comunes de VK, y tal vez incluso copias reales, de las que los verdaderos propietarios ni siquiera son conscientes. ¿Qué puede hacer un “robot”? Para ser honesto, no es prácticamente nada, simplemente existe y eso es todo. No sabe escribir ni leer ni nada de lo que saben los visitantes normales de VKontakte. A continuación, consideraremos la pregunta: cómo hacer un bot en VK para que se convierta en un asistente real en la promoción de un grupo.

Cómo hacer un bot en VK para un grupo

Es importante comprender que existen varias formas de crear bots en VK. El primero de los bots que se tratará es “Robochat”. Este bot tiene una funcionalidad bastante sencilla y comprensible, y también es sencillo y fácil de configurar. Para instalarlo, debe ir al sitio web robochat.io y hacer clic en el botón "Crear un bot" (si es necesario, debe realizar el procedimiento a través de su correo electrónico).

Por lo tanto, irá a la sección de configuración del bot, donde deberá conectar el bot a la comunidad requerida. Al hacer clic en el botón "Conectar ahora", de la lista que aparece, debe seleccionar "Comunidad VKontakte" y hacer clic en el botón "Conectar" a la derecha. Como podemos ver, crear o descargar un bot VK no es nada difícil.

La aplicación solicitará acceso a su cuenta personal de VK. Es importante saber que esta cuenta debe tener derechos de administrador en el público de VKontakte deseado). Haga clic en "Permitir"

Esto lo llevará a la lista de agregar grupos de VKontakte en los que figura como administrador. Haga clic en "Conectar" a la derecha de la comunidad requerida" y luego haga clic en "Permitir" para permitir que el bot acceda a los mensajes, fotos y videos del grupo. Ahora regrese a su cuenta en el sitio web Robochat.io, vaya a la sección "Chatbot" a la izquierda, en la que habrá tres subpestañas ("Principal", "Mensajes VK", "Palabras clave"). Estamos directamente interesados ​​en la subpestaña "Básico", donde tendrá la oportunidad de personalizar las respuestas de su bot a varias solicitudes de los usuarios, incluido el uso de la subpestaña "Palabras clave". Para editar una opción específica, hay un botón "Editar", que se encuentra al lado de cada elemento. Una vez que haya terminado de configurar las respuestas de la plantilla, su bot estará listo para funcionar. Para activarlo, el usuario debe hacer clic en el botón "Escribir mensajes" en su comunidad y el bot le responderá de acuerdo con la configuración que haya especificado.

La segunda forma de crear un bot para un grupo VK.

Se puede considerar el siguiente método. Bot “BotVK”, que implica respuestas automáticas a mensajes entrantes de usuarios públicos. La instalación de dicho bot en VK desde el sitio bot-vk.ru es idéntica en su algoritmo a la instalación del programa anterior "Robochat". El script del bot VK está integrado en el propio programa, lo que facilita su uso. Al mismo tiempo, configurar "BotVK" también es intuitivamente sencillo y no requiere que el usuario tenga ningún conocimiento especial de programación. Para comenzar a trabajar con este bot, vaya al sitio web bot-vk.ru y haga clic en el botón "Crear un bot".

Luego debe hacer clic en el botón "Iniciar sesión o crear una cuenta" y hacer clic en "Permitir" en la parte inferior derecha para otorgar acceso a la aplicación a su cuenta. De esta manera podrás ir al panel de control del bot que creaste. Haga clic en el botón "Conectar grupo" para comenzar a trabajar con su grupo, debe marcar su grupo en la lista y hacer clic en "Conectar" y luego en "Permitir". A la derecha habrá un menú para administrar el bot creado.

Allí debes ir a la pestaña "Lista de Bots" y luego hacer clic en el nombre de tu bot en el grupo ubicado a la derecha. Aparecerá la configuración de su bot VK, en la que tendrá la oportunidad de hacer una lista bastante extensa de configuraciones para su funcionalidad y luego hacer clic en "Guardar" a continuación para confirmar los cambios.

El tercer método es crear chatbots en el sitio web bots.hsstore.ru.

Puede utilizar bots pagos de forma segura en el sitio web bots.hsstore.ru. Aquí puede encontrar muchos bots pagos para el sitio web de VK, cuya funcionalidad se puede activar por una tarifa mensual de 990 rublos. Entre ellos se encuentra un bot de Wikipedia (envía artículos de Wikipedia según sus solicitudes), un bot adecuado para la comunicación (tiene la capacidad de conectarlo de forma anónima con otros usuarios desconocidos), un bot que muestra horóscopos, etc.

La instalación de los bots descrita anteriormente es similar a la instalación de las opciones ya comentadas, pero es importante saber que aquí también se requiere invertir en funcionalidad paga. Teniendo en cuenta que los dos bots anteriores, "Robochat" y "BotVK", son completamente gratuitos, instalar copias pagas de los bots parece una decisión bastante dudosa.

En esta sección, analizamos varios métodos para crear un bot en grupos VK en poco tiempo para enviarles mensajes. Instalar este tipo de bot implica tener derechos administrativos en tu cuenta para gestionar el grupo, así como otorgarle al bot conectado derechos para interactuar directamente con tu

comunidad. Al configurar el bot correctamente, tendrá una funcionalidad auxiliar conveniente que puede facilitar que su grupo VK trabaje con una gran cantidad de suscriptores.

Cómo crear un bot en VK a través de Android

Android es un sistema operativo creado para dispositivos electrónicos. Se ejecuta en el kernel de Linux y permite crear aplicaciones controladas por el dispositivo a través de las bibliotecas del sistema de Google. ¿Cómo crear un bot VK a través de un teléfono inteligente? Android es totalmente compatible con muchos programas para crear bots utilizando un teléfono inteligente. Para hacerlo usted mismo, le ayudará un excelente conocimiento de un lenguaje de programación, incluida la comprensión de lo que significa el concepto de "código bot". Si tiene dificultades con esto, también puede utilizar un dispositivo o servicios automáticos. Digamos que Abot puede crear su propio asistente virtual. Atenderá mensajes y todo tipo de consultas de los clientes. Es bastante conveniente controlar y realizar negocios a través de un teléfono inteligente.

Constructor de bots VK

Antes de emprender este negocio, debe decidir para qué sirve. Su creación no siempre requiere habilidades de programación ni grandes conocimientos. Los diseñadores de bots te ayudarán a afrontar perfectamente esta tarea (Chatfuel se considera uno de los más populares). Los diseñadores le permiten crear un bot utilizando una interfaz fácil de usar. Las empresas y firmas serias se contentan con estos asistentes. Los siguientes diseñadores tienen demanda y son populares en la actualidad: Api.ai, Meya, Pandarabots, Manybot. Estos servicios se utilizan para diseñar chatbots en diversas redes sociales.

Cómo crear un chatbot

Un visitante moderno de las redes sociales, sin duda, necesita un asistente activo. La falta de tiempo para realizar actividades completas de VK es el punto de partida para la creación de robots que responderán a mensajes y realizarán otras tareas. Un chatbot es un programa a través del cual el usuario puede comunicarse.

Hay cuatro tipos de chatbots:

· Asistentes. Están constantemente cerca, encuentran la información que el usuario necesita, configuran una alarma, realizan tareas organizativas, como realizar un pedido de comida en la oficina o en casa, reservar una habitación de hotel, comprar billetes.

· Inteligencia artificial. Los avances modernos llevan al hecho de que los chatbots realizan tareas que requieren mucho tiempo humano. Los robots son capaces de responder cualquier pregunta de su interlocutor.

· Robots empresariales. Se proporcionan con el fin de aumentar la eficiencia y participar en la optimización del negocio. Aquí es necesario un bot para un grupo VK. Digamos que el servicio SpyCat 2.0 envía una notificación al usuario sobre los comentarios recibidos en la red VK, mientras tiene una función de respuesta automática. Los bots empresariales reducen costes y automatizan todos los procesos de trabajo (envían mensajes a clientes y empleados).

· Juegos de azar. Un programa que controla una computadora. Imita a sus compañeros en un juego de equipo en línea. Estos bots se basan en inteligencia artificial y están totalmente adaptados a las características de un juego en particular.

¿Cómo crear un chatbot en VK? - Esta es una pregunta muy popular entre aquellos que pretenden desarrollar su negocio atrayendo clientes a través de un bot VK. Esto es bastante fácil de hacer. Antes de iniciar este negocio se deben cumplir los siguientes criterios: acceso continuo a Internet y disponibilidad de tiempo libre. También necesitas descargar un chatbot gratuito, ejecutarlo y agregar una cuenta. A continuación, debe ingresar el nombre de usuario y la contraseña de su página personal en VK. Luego se abrirán las instrucciones; deberás leerlas e ir a la pestaña "Mensajes". En el muro comunitario de tu cuenta debes escribir "¡Bot, hola!" Después de treinta segundos debe dar una respuesta. En las pestañas del programa "Cuenta" y "Equipos" puede cambiar y configurar las funciones del bot VK.

Descargue un bot listo para usar para VK

En esta sección veremos en detalle cómo y dónde puede descargar el bot VK. De hecho, descargar un bot es una tarea absolutamente simple que puede realizar absolutamente cualquier persona que tenga las habilidades para usar una PC. Puede descargar VK Bot en el sitio web de vk-robot. o en otros sitios. Todos tienen una cosa en común, a saber: el riesgo de descargar un virus, descargar un programa desactualizado que no solo no le será útil, sino que contribuirá a una prohibición rápida y todo tipo de otros problemas. Al descargar programas en línea, corre un gran riesgo.

Lo único que te queda es el derecho a elegir. Para tomar la decisión correcta, es necesario evaluar cualitativamente las funciones del bot que son necesarias específicamente para su actividad. Puede encontrar fácilmente una descripción de las funciones en cada sitio que ofrece descargas de bots.

Pero si el sentido común le dice que no necesita descargar cosas de Internet, entonces existe un servicio confiable que no solo es gratuito, sino que tampoco le causará problemas, ni siquiera en su página personal: BossLike.ru.

como un jefe Tiene muchas funciones que los usuarios de VKontakte desean: suscriptores, comentarios...

Cómo escribir un bot para VK tú mismo

Esta sección será útil para aquellos que quieran familiarizarse con la estructura del bot con más detalle y crear un bot para VK de forma gratuita y por su cuenta.

· En cualquier buscador encontramos el formulario de registro en “VK”. En la línea "nombre", ingrese cualquier nombre. En la línea "apellido", es mejor ingresar un apellido común. Haga clic en "registrarse".

· Luego debe ingresar su número de teléfono y hacer clic en "obtener código".

· Después de la confirmación del registro, se generará una página en blanco que deberá ser completada. Pasemos ahora a la pregunta principal: "¿Cómo crear un bot en VK usted mismo?" En la cuenta de un nuevo usuario, se deben completar todos los campos obligatorios. A saber, los siguientes:

Paso a paso:

1. Básico: el nombre y apellido ya están completados. Esto significa que debe indicar sexo, estado civil, datos de nacimiento, ciudad e idioma. Luego, abuelos, hermanos, hermanas, padres, hijos, nietos, agregue lo que desee. Haga clic en "guardar". Es importante comprender que los datos reflejarán la personalidad, por lo que su bot de VKontakte debe parecer real.

2. Contactos: debes agregar tu país, Skype y un enlace a tu sitio web personal. Los últimos puntos no podrán sumarse.

3. Intereses: Es importante incluir actividades. Indique un gran número de intereses (viajes, libros, humor, etc.). Luego, ingrese su música favorita, luego películas, libros, programas de televisión, juegos, citas y marque algo "sobre usted" y luego guarde.

4. Lo siguiente es educación, marca la escuela, las instituciones educativas y ahorra.

5. Carrera: debes ingresar el lugar de estudio y actividad, incluso puedes tener varios, y también guardarlo.

6. Servicio: es necesario indicar únicamente, por regla general, el género masculino.

7. Posición en la vida: se debe completar: preferencias políticas, lo principal en la vida, la cosmovisión, lo principal en las personas, la actitud hacia el tabaquismo y el alcohol, las fuentes de inspiración, y guarde todo esto también.

Entonces, ahora sigue la segunda etapa para resolver la pregunta "¿Cómo crear un bot VK por tu cuenta?" Ahora necesitas agregar un avatar y una foto.

1. Busque en Internet una “imagen” de una fotografía de una persona. Descárgalos a tu computadora y guárdalos.

2. Es recomendable buscar varias fotografías de una misma persona. En este caso, se crea la apariencia de un "usuario real".

3. La foto del avatar debe ser de tamaño mediano; debe reflejar claramente el rostro de nuestro “bot”. No debes tomar animales ni fotografías extravagantes. todo debería ser

lo más cerca posible de la realidad. Sube la foto a la página de VK y guárdala.

4. A continuación añade el resto de fotos, cuantas más haya mejor. Pueden ser variados. El “bot VK” puede estar en singular o en una empresa o con un grupo de personas. Debes cargar al menos 4-5 fotos en tu cuenta. Pasemos a la tercera etapa y descubramos cómo crear un "bot" en VK.

Siguiente paso...

La tercera etapa para resolver el problema: ¿Cómo crear un “bot VKontakte para grupos”? La siguiente etapa debería estar llena de las acciones más activas. Debes subir varios videos y algunas grabaciones de audio a la nueva página. Y también comparte tu cuenta con amigos. ¿Cómo crear un "bot" en VK sin programas, por así decirlo, manualmente? Este método de crear un bot "manual" requerirá su tiempo. El hecho es que necesitarás agregar amigos manualmente. Tendrás que crear y aceptar solicitudes de amistad diariamente. Para que el usuario falso parezca aún más vivo, necesita comunicarse.

Entonces, en conclusión, podemos resumir que puedes crear un bot VK 2018 de dos maneras: instalando un programa especial o escribiendo tú mismo en el chat todos los días y comunicándote con otros usuarios en su nombre. Como puedes comprobar por ti mismo, no hay nada complicado. Sin embargo, vale la pena tener en cuenta que para crear un "bot" completo, es necesario dedicar su tiempo libre.




Arriba