✏️ 正在编辑: ChatBotController.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/controllers/ChatBotController.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php //ini_set('display_errors', 1); //ini_set('display_startup_errors', 1); //error_reporting(E_ALL); class ChatBotController extends Zend_Controller_Action { private $userId; private $userName; private $servico; private $corretorId; private $banco; private $numeroProposta = null; function setServico($data) { $servico = @$data['originalRequest']['source']; $this->servico = $servico ? $servico : null; } function getServico() { return $this->servico; } function getUserId() { return $this->userId; } function getUserName() { return $this->userName; } function setUserId($userId) { $this->userId = $userId; } function setUserName($userName) { $this->userName = $userName; } public function getCorretorId() { return $this->corretorId; } public function setCorretorId($corretorId) { $this->corretorId = $corretorId; } function getBanco() { return $this->banco; } function getNumeroProposta() { return $this->numeroProposta; } function setBanco($data) { if( isset($data['result']['parameters']['bancos']) ){ $this->banco = $data['result']['parameters']['bancos']; } } function setNumeroProposta($data) { if( isset($data['result']['parameters']['contrato']) ){ $this->numeroProposta = $data['result']['parameters']['contrato']; } } public function headAction() { $this->getResponse()->setBody(null); } public function optionsAction() { $this->getResponse()->setBody(null); } public function init() { $this->_helper->getHelper('layout')->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); $usuario = new stdClass(); $usuario->{'login'} = "CHATBOT WHATSAPP"; Yuppie_Auth::writeStorage($usuario); } public function webhookAction() { header('Content-Type: application/json'); $body = $this->getRequest()->getRawBody(); if(empty($body)){ $this->_helper->json(['error' => 'Requisição inválida!']); } $data = Zend_Json::decode($body); $chatBotModel = new Model_ChatBot(); $chatBotModel->filtrarEventos($data); } private function enviaMensagem($response) { $this->_helper->json($response); } private function autenticar($userId, $servico) { $corretorBot = new Model_CorretorBot(); $corretor = $corretorBot->exibir($userId, $servico); if( !empty($corretor) ){ $this->setCorretorId($corretor['corretor_id']); return true; } return false; } private function logar($cpf, $userId) { if( $this->existeNoYuppie($cpf) ){ if( $this->salvarCorretorBot($userId) ){ return true; } } $this->enviaMensagem(array( 'speech' => "Que pena, não consegui encontrar seu CPF, por favor, verifique e tente novamente", 'displayText' => "Que pena, não consegui encontrar seu CPF, por favor, verifique e tente novamente", 'source' => '' )); return false; } private function existeNoYuppie($cpf) { $modelCorretor = new Model_Corretor(); $corretor = $modelCorretor->getByCpf($cpf); if( $corretor ){ $this->setCorretorId($corretor['id']); return true; } else { return false; } } private function salvarCorretorBot($userId) { $dados = array( 'user_id' => $userId, 'corretor_id' => $this->getCorretorId(), 'servico' => $this->getServico() ); $corretorBot = new Model_CorretorBot($dados); $id = $corretorBot->salvar($corretorBot); if( $id > 0 ){ return true; } return false; } private function setUserIdAndName($data) { if( $this->getServico() == 'facebook' ){ $userId = @$data['originalRequest']['data']['recipient']['id']; $this->setUserId($userId); $this->setUserName(""); } elseif( $this->getServico() == 'skype' ){ $userId = @$data['originalRequest']['data']['address']['user']['id']; $userName = @$data['originalRequest']['data']['address']['user']['name']; $this->setUserId($userId); $this->setUserName($userName); } } private function showProposta($nomeBanco, $numeroProposta) { if( !empty($nomeBanco) && !empty($numeroProposta) ){ $numeroProposta = String_Refatorar::soNumeros($numeroProposta); $banco = Core_Banco_Service_ChatBot::factory($nomeBanco); if( $banco ){ $this->formatReturnProposta($banco->detalheProposta($numeroProposta)); } else { $this->enviaMensagem(array( 'speech' => "Desculpe, só consigo encontrar propostar do Banrisul.", 'displayText' => "Desculpe, só consigo encontrar propostar do Banrisul", 'source' => '', 'contextOut' => array( array( 'name' => 'contrato_numero', 'lifespan' => '1', 'parameters' => array( '' => '' ) ) ) )); } } else { $this->enviaMensagem(array( 'speech' => "Por favor, informe um número de proposta válido", 'displayText' => "Por favor, informe um número de proposta válido", 'source' => '', 'contextOut' => array( array( 'name' => 'contrato', 'lifespan' => '1', 'parameters' => array( '' => '' ) ) ) )); } } private function formatReturnProposta($propostas) { if( !empty($propostas) ){ foreach ( $propostas as $proposta ) { if( strstr($proposta['Tipo_Operacao'], "R") ){ $valorLiquido = number_format($proposta['Valor_Liquido_Liberado'], 2, ',', '.'); $valorBruto = number_format($proposta['Valor_Operacao'], 2, ',', '.'); } else { $valorLiquido = number_format($proposta['Valor_Operacao'], 2, ',', '.'); $valorBruto = number_format($proposta['Valor_Operacao'], 2, ',', '.'); } $this->saveLog($this->getCorretorId(), $proposta['Proposta'], 'Banrisul', $this->getServico()); $prazo = ltrim($proposta['Prazo'], '0'); $string = "Sua proposta encontra-se com o status {$proposta['Desc_Situacao']}, ela possui valor bruto de R$ {$valorBruto} e valor liquido de R$ {$valorLiquido}, ela está cadastrada com o prazo de {$prazo} meses, deseja consultar outra proposta?"; } $this->enviaMensagem(array( 'speech' => $string, 'displayText' => $string, 'source' => '', 'contextOut' => array( array( 'name' => 'contrato', 'lifespan' => '1', 'parameters' => array( '' => '' ) ) ) )); } else { $this->enviaMensagem(array( 'speech' => "Desculpe, nenhuma proposta encontrada, por favor, tente novamente", 'displayText' => "Desculpe, nenhuma proposta encontrada, por favor, tente novamente.", 'source' => '', 'contextOut' => array( array( 'name' => 'contrato', 'lifespan' => '1', 'parameters' => array( '' => '' ) ) ) )); } } protected function saveLog($usuarioId, $proposta, $banco, $servico) { $log = new Model_DbTable_ChatBotLog(); $log->save($usuarioId, $proposta, $banco, $servico); } }
💾 保存文件
← 返回文件管理器