123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- <?php
-
- namespace App\Http\Controllers;
-
- use Carbon\Carbon;
- use App\Models\Tag;
- use App\Models\Survey;
- use Illuminate\Http\Request;
- use GuzzleHttp\Client;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Storage;
-
- class HealthyPassPortController extends Controller
- {
- private $api_header = array();
-
- public function __construct()
- {
- $this->api_header = [
- 'Authorization' => 'Bearer ' . config('botApi.botToken'),
- 'Accept' => 'application/json'
- ];
- }
- public function file(Request $request){
-
- }
-
- public function profile(Request $request){
- $profile = Survey::where('line_user_id',$request->lineUserId)->first();
- $profile_tag_list = $profile->getTagList();
- }
-
- /**
- * 送出問卷
- *
- */
- public function post(Request $request){
- $lineUserId = $request->lineUserId; //line UID
- $headSticker = $request->headSticker; //頭貼
- $healthAction = $request->healthAction; //平常你有什麼健康行動(複選)
- $healthTopic = $request->healthTopic; //你對什麼健康話題有興趣(複選)
- $healthStatus = $request->healthStatus; //你覺得自己的身體狀況如何
- $healthAdapt = $request->healthAdapt; //面對疫情趨緩,以下哪一個敘述最符合你的應對
- $healthThought = $request->healthThought; //下列哪一個敘述最符合你的想法
- $healthAge = $request->healthAge; //你的年齡
- $healthNickname = $request->healthNickname; //暱稱
- $healthGender = $request->healthGender; //性別
- $healthGenderRole = $request->healthGenderRole;//性別 male or female
-
- $buildActions = [];
- array_push($buildActions, $this->buildActionsRequest("addTag", $healthAction));
- array_push($buildActions, $this->buildActionsRequest("addTag", $healthTopic));
- array_push($buildActions, $this->buildActionsRequest("addTag", $healthStatus));
- array_push($buildActions, $this->buildActionsRequest("addTag", $healthAdapt));
- array_push($buildActions, $this->buildActionsRequest("addTag", $healthThought));
- array_push($buildActions, $this->buildActionsRequest("addTag", $healthAge));
- array_push($buildActions, $this->buildActionsRequest("addTag", $healthGender));
- if($healthGenderRole != "")array_push($buildActions, $this->buildActionsRequest("saveParams", $healthGenderRole, "demographics", "gender"));
-
- $statusCode = $this->botActionsSend($lineUserId,$buildActions);
- if($statusCode == 200){
- //確認完成填寫問卷後,建立完成問券標籤
- $buildActions = [];
- array_push($buildActions, $this->buildActionsRequest("addTag", config("botApi.doneSurvey")));
- array_push($buildActions, $this->buildActionsRequest("setMenu", config("botApi.setMenuDoneSurvey")));
- $this->botActionsSend($lineUserId,$buildActions);
- return response()->json(["result" => 'successed']);
- }else{
- return response()->json(["result" => 'failed'] );
- }
- }
-
- function buildActionsRequest($type, $values, $groupId = null, $paramName = ""){
- if($type == "addTag"){
- if(is_array($values)){
- $tags = $values;
- }else{
- $tags = [$values];
- }
- return [
- "type" => $type,
- "value" => $tags
- ];
- }elseif($type == "saveParams"){
- return [
- "type" => $type,
- "groupId" => $groupId,
- "values" => [
- [
- "name" => $paramName,
- "value" => $values
- ]
- ]
- ];
- }elseif($type == "setMenu"){
- return [
- "type" => $type,
- "platform" => 1,
- "value" => $values
- ];
- }
- }
-
- function botActionsSend($lineUserId,$actions){
- $client = new Client();
- $res_users = $client->request('POST', config('botApi.botActions'),[
- 'headers'=>$this->api_header,
- 'json' => [
- 'userId' => $lineUserId,
- 'pageId' => config('botApi.lineOAId'),
- 'platform' => 1,
- 'actions' => $actions
- ]
- ]);
- $statusCode = $res_users->getStatusCode();
-
- return $statusCode;
- }
- }
|