¿Cómo enviar encuestas 2.0 con nuetro Bot de Telegram?

¿Cómo enviar encuestas 2.0 con nuetro Bot de Telegram?

El 23 de enero del 2020, el equipo de Telegram lanzo la versión 4.6 de la API de Bots, en esta actualización se incluyeron multiples novedades con respecto a las encuestas para poder hacer posibles bots como @QuizBot que permiten crear encuestas multirespuesta, encuentas donde solo una opción es correcta, ...

Esta actualización se lanzo poco tiempo después de que estas novedades llegarán a Telegram y Telegram X. Debido a que Telegram X y la API de Bots funcionan con TDLib las dos aplicaciones de Telegram por primera vez se actualizaron a la par y lanzaron sus respectivas versiones estables el mismo día.

¿Cómo enviar encuestas públicas y anónimas?

Para enviar encuestas al igual que os contamos en el anterior post de como integrar las encuestas en nuestro bot de Telegram tenemos que usar el método sendPoll para poder enviar encuestas.

¿Cómo integrar las encuestas en nuetro Bot de Telegram? 【NodeJS】
El 14 de abril del 2019 se actualizó la API de Bots de Telegram a la versión 4.2 incluyendo el soporte para poder crear encuestas mediante Bots. Hace escasasdos semanas los desarrolladores de la API node-telegram-bot-api añadieron elsoporte también para las encuestas. En este post os vamos a en…

El método sendPoll tiene un parámetro llamado is_anonymous que solo puede tomar los valores true (los votos serían anónimos) o false (los votos de la encuesta serían públicos), si no incluimos este parámetro cualquier encuesta que realizaremos la tomará como anónima.

El siguiente código sirve para enviar una encuesta anónima debido a que el parámetro is_anonymous esta puesto a true, el texto que enviará es el podemos ver en la variable (var) question es "¿La lava es más caliente que el SOL?" y en la variable answers tenemos un Array con 2 posibles resputas Si o No.

bot.onText(/^\!encuesta|^\/encuesta/, (msg) => {

    // Variable en la que guardamos la pregunta de la encuesta
  var question = "¿La lava es más caliente que el SOL?";
    
    // Array donde guardas las respuestas a las preguntas
  var answers = ["Si", "No"]; // Mínimo 2 y máximo 10 opciones 
    
    // Objecto Json en el guardamos los distintos parametros que le podemos 
    // pasar a encuesta
  const opts = {
    'is_anonymous': true
  };

    // Método sendPoll nos permite enviar la encuesta
  bot.sendPoll(msg.chat.id, question, answers, opts);

});

¿Cómo enviar una encuesta multirespuesta?

En el caso de que queramos que los usuarios puedan marcar más de una opción en las encuesta tenemos que usar un nuevo parámetro llamado allows_multiple_answers que por defecto si no lo ponemos es "false" (no permite multirespuesta), en este caso nos interesa ponerlo como "true" para permitir que los usuarios puedan seleccionar más de una opción en momento de votar.

bot.onText(/^\!encuesta|^\/encuesta/, (msg) => {

    // Variable en la que guardamos la pregunta de la encuesta
  var question = "¿La lava es más caliente que el SOL?";
    
    // Array donde guardas las respuestas a las preguntas
  var answers = ["Si", "No", "No estoy seguro", "Ni idea"]; // Mínimo 2 y máximo 10 opciones 
    
    // Objecto Json en el guardamos los distintos parametros que le podemos 
    // pasar a encuesta
  const opts = {
    'is_anonymous': false,
    'allows_multiple_answers': true
  };

    // Método sendPoll nos permite enviar la encuesta
  bot.sendPoll(msg.chat.id, question, answers, opts);

});

¿Cómo enviar encuestas tipo Quiz?

En el caso de querer enviar encuestas del tipo Quiz (donde solo una respuesta es correcta) debemos pasarle más parámetros. Entre los nuevos parámetros nos encontramos con type que define el tipo de encuesta, si no lo ponemos por defecto es regular (una encuesta normal) en caso contrario debemos poner quiz para que sea una encuesta con una sola pregunta válida.

Para indicar la respuesta que queremos que sea válida debemos pasar el parámetro correct_option_id que corresponde a las posiciones del Array "answers" donde la primera posición es el 0 y la última es 9 (en el caso de tener 10 elementos en el Array). Recordar que nosotros contamos de 1 a 10 generalmente, pero los Arrays en Javascript empiezan en 0 siendo esta la primera posición.

bot.onText(/^\!encuesta|^\/encuesta/, (msg) => {

    // Variable en la que guardamos la pregunta de la encuesta
  var question = "¿La lava es más caliente que el SOL?";
    
    // Array donde guardas las respuestas a las preguntas
  var answers = ["Si", "No"]; // Mínimo 2 y máximo 10 opciones 
    
    // Objecto Json en el guardamos los distintos parametros que le podemos 
    // pasar a encuesta
  const opts = {

    'is_anonymous': true,
    'type': 'quiz', // Puede ser 'regular' o 'quiz'
    'correct_option_id': 0
  };

    // Método sendPoll nos permite enviar la encuesta
  bot.sendPoll(msg.chat.id, question, answers, opts);

});

Espero que este pequeño tutorial os sirva como introducción a este nuevo tipo de encuestas y así podáis crear integraciones muy interesantes con vuestro propio bot de Telegram. Esperamos vuestras opiniones y sugerencias.