developers.kakao.com/docs/latest/ko/kakaotalk-channel/rest-api#channel-callback
카카오톡 채널에 고객이 추가되거나 차단되었을때 콜백을 받아 고객을 식별할 수 있는 기능입니다.
1. Kakao Developers에서 콜백 URL을 등록합니다.
2. callback 받을 페이지를 생성하고, 간단히 파일에 저장하는 로직을 추가해 봅니다.
<?php
class ChannelService extends service {
public function callback(){
//{"event":"added","id":"1111","id_type":"app_user_id","plus_friend_public_id":"_FLX","plus_friend_uuid":"@ad","updated_at":"2020-01-01T00:00:00Z"}'
// Takes raw data from the request
$json = file_get_contents('php://input');
// Converts it into a PHP object
$data = json_decode($json);
$this->hasAccess($data);
Response::jsonReturn('excute', 'error');
}
public function hasAccess($data){
//Write action to txt log
$log = "/event: ".$data->event.
"/id: ".$data->id.
"/id_type: ".$data->id_type.
"/plus_friend_public_id: ".$data->plus_friend_public_id.
"/plus_friend_uuid: ".$data->plus_friend_uuid.
"/updated_at: ".$data->updated_at.PHP_EOL;
file_put_contents('./channel_callback_log_'.date("j.n.Y").'.txt', $log, FILE_APPEND);
}
}
3. 사이트 배포 후, curl로 작동 여부를 확인합니다.
mcpel@DESKTOP-EPQ0FGP MINGW64 ~ (master)
$ curl -X POST 'https://googsu.com/api/kakao/channel/callback' -H 'Authorization: KakaoAK test' -H 'Content-Type: application/json' -d '{"event":"added","id":"1111","id_type":"app_user_id","plus_friend_public_id":"_FLX","plus_friend_uuid":"@ad","updated_at":"2020-01-01T00:00:00Z"}'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 185 100 40 100 145 232 843 --:--:-- --:--:-- --:--:-- 1081
{"result_code":200,"result":"success"}
4. 서버에 저장된 로그파일을 확인해봅니다.
/event: added/id: 1111/id_type: app_user_id/plus_friend_public_id: _FLX/plus_friend_uuid: @ad/updated_at: 2020-01-01T00:00:00Z
5. 실제 채널 연결 차단과 추가로 최종확인합니다.
/event: blocked/id: 1515035367/id_type: app_user_id/plus_friend_public_id: _GVVxnK/plus_friend_uuid: @국수닷컴/updated_at: 2021-01-14T05:06:37Z
/event: added/id: 1515035367/id_type: app_user_id/plus_friend_public_id: _GVVxnK/plus_friend_uuid: @국수닷컴/updated_at: 2021-01-14T05:06:42Z
/event: blocked/id: 1515035367/id_type: app_user_id/plus_friend_public_id: _GVVxnK/plus_friend_uuid: @국수닷컴/updated_at: 2021-01-14T05:08:48Z
/event: added/id: 1515035367/id_type: open_id/plus_friend_public_id: _GVVxnK/plus_friend_uuid: @국수닷컴/updated_at: 2021-01-14T05:12:02Z
카카오톡앱에서 실행한 경우 id_type: app_user_id 이고 웹사이트에서 카카오 싱크로 가입한 경우 id_type이 open_id 입니다.
'카카오 REST API & SDK > 카카오톡 채널' 카테고리의 다른 글
카카오톡 채널 채팅 시, 이전 url을 함께 보낼 수 있나요? (1) | 2021.06.11 |
---|---|
한 페이지에서 카카오톡 채널 채팅 버튼 두개 사용하기 (0) | 2021.05.07 |
PHP 예제 - [카카오톡 채널] 고객 관리: 파일 만들기 / 파일 보기 / 사용자 추가하기 / 사용자 삭제하기 (0) | 2021.03.10 |
카카오톡 채널 - v20201210 (0) | 2020.12.10 |
[JavaScript] 카카오톡 채널 - v20201130 (0) | 2020.11.30 |
댓글