<?php
namespace App\Http\Controllers;
class Example extends Controller
{
private function ok($token)
{
return response()->json(['cmd' => 'OK', 'token' => $token]);
}
//接收消息推送
public function recv()
{
$data = request()->all();
$token = $data['token'] ?? ''; //获取所有的请求参数,
$cmd = isset($data['cmd']) ? $data['cmd'] : ''; //判断最外层是否存在cmd字段
$content = ''; //从请求参数里获取content字段对应的数据,content是json格式的字符串
if (!empty($data['content'])) {
$content = urldecode($data['content']); //从第一层拿到content的数据,然后url解码,解码之后拿到的是json格式的字符串
$content = json_decode($content, true); //json字符串解析成对象
$data['content'] = $content;
if (empty($token)) {
$token = $content['token'] ?? '';
}
}
if (empty($content)) {
return $this->ok($token);
}
//最外层没有cmd参数,那么就从content参数里拿
if (empty($cmd)) {
$cmd = $content['cmd'];
}
return $this->ok($token);
//不同的cmd表示不同的推送业务
switch ($cmd) {
case 'talk_info': //整体推送(整段对话信息一起推送)
break;
case 'session': //人工对话开始,开启逐条
break;
case 'message': //一条消息,开启逐条
break;
case 'end': //人工对话结束,开启逐条
break;
case 'vote': //访客评价,开启逐条
break;
case 'lysession': //留言开始,开启逐条
break;
case 'customer': //访客信息推送,开启逐条
break;
}
return $this->ok($token);
}
}