23/09/2017

Como fazer meu bot em php enviar mensagens com teclado personalizado



As vezes pode ser necessário criar um teclado personalizador em seu bot para que as respostas possam atender uma das opções entre as quais o bot foi programado para responder, na hora que iremos dá o código para que você possa criar o teclado consideraremos que seu código do bot já tem todas estas funções e códigos :



<?php
define('BOT_TOKEN', '<!--TOKEN API-->');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
function exec_curl_request($handle) {
  $response = curl_exec($handle);
  if ($response === false) {
    $errno = curl_errno($handle);
    $error = curl_error($handle);
    error_log("Curl returned error $errno: $error\n");
    curl_close($handle);
    return false;
  }
  $http_code = intval(curl_getinfo($handle, CURLINFO_HTTP_CODE));
  curl_close($handle);
  if ($http_code >= 500) {
    sleep(10);
    return false;
  }   else if ($http_code != 200) {
    $response = json_decode($response, true);
    error_log("Request has failed with error {$response['error_code']}: {$response['description']}\n");
    if ($http_code == 401) {
      throw new Exception('Invalid access token provided');
    }
  return false;
} else {
  $response = json_decode($response, true);
    if (isset($response['description'])) {
      error_log("Request was successfull: {$response['description']}\n");
    }
    $response = $response['result'];
  }
  return $response;
}
function apiRequest($method, $parameters) {
  if (!is_string($method)) {
    error_log("Method name must be a string\n");
    return false;
  }
  if (!$parameters) {
    $parameters = array();
  } else if (!is_array($parameters)) {
    error_log("Parameters must be an array\n");
    return false;
  }
  foreach ($parameters as $key => &$val) {
    if (!is_numeric($val) && !is_string($val)) {
      $val = json_encode($val);
    }
  }
  $url = API_URL.$method.'?'.http_build_query($parameters);
  $handle = curl_init($url);
  curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5);   curl_setopt($handle, CURLOPT_TIMEOUT, 60);
  return exec_curl_request($handle);
}
function apiRequestJson($method, $parameters) {
  if (!is_string($method)) {
    error_log("Method name must be a string\n");
    return false;
  }
  if (!$parameters) {
    $parameters = array();
  } else if (!is_array($parameters)) {
    error_log("Parameters must be an array\n");
    return false;
  }
  $parameters["method"] = $method;
  $handle = curl_init(API_URL);
  curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5);
  curl_setopt($handle, CURLOPT_TIMEOUT, 60);
  curl_setopt($handle, CURLOPT_POSTFIELDS, json_encode($parameters));
  curl_setopt($handle, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
  return exec_curl_request($handle);
}
function processMessage($message) {
    //Conteúdo de sua função que processa a mensagem   }
}
$content = file_get_contents("php://input");
$update = json_decode($content, true);
if (!$update) {
  exit;
}
if (isset($update["message"])) {
  processMessage($update["message"]);
}
?>

    
    



Para enviar mensagens simples neste código usariamos algo em torno disto :
    
      apiRequest("sendMessage", array('chat_id' => $message['chat']['id'], "text" => 'Olá'));
    
    
    


Para enviar mensagens com teclado personalizados usamos algo em torno disso:

    
      apiRequest("sendMessage", array('chat_id' => $message['chat']['id'], "text" => 'Olá', 'reply_markup' => array('keyboard' => array(array('Olá', 'Oi')), 'one_time_keyboard' => true, 'resize_keyboard' => true)));
    
    
    


Dúvidas ? Deixe nos comentários.
Compartilhar:

0 comentários:

Postar um comentário

Ao acessar e comentar em nossos serviços você concorda com a nossas Politicas de privacidade, com nossos Termos de Uso e com a nossas Políticas de segurança

Mais lido da semana