Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바스크립트
- java
- html
- 공모주 청약
- 코드이그나이터
- php
- SQL
- 자바
- css
- 공모주
- 리눅스
- 제이쿼리
- Stock
- Stock ipo
- JavaScript
- Eclipse
- 주식 청약 일정
- IPO
- 주식
- 7월 공모주 청약 일정
- 오라클
- 6월 공모주 청약 일정
- MYSQL
- codeigniter
- jquery
- linux
- 공모주 청약 일정
- 주식 청약
- Oracle
- 맥
Archives
- Today
- Total
개발자의 끄적끄적
페이스북 챗봇 예제 (facebook chatbot example) 본문
728x90
반응형
예전에 만들어봤던 페이스북 예제 소스임.
참고하시고 도움들 되시길...ㅎㅎ
참고로 payload 와 postback 부분은 꼭 확인하면서 체크!!
// 페이스북에 등록한 get_url 소스
$access_token = "페이스북에서 발급받은 토큰";
$v_token = "fbchat";
$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];
if ($verify_token === $v_token) {
echo $challenge;
}
$input = json_decode(file_get_contents('php://input'), true);
$sender = $input['entry'][0]['messaging'][0]['sender']['id'];
// 실제 메세지를 보내기전 입력중이라는 표시
$action = "typing_on";
$r = array();
$r["recipient"]["id"] = $sender;
$r["sender_action"] = $action;
$jsonData = json_encode($r);
//Encode the array into JSON.
$jsonDataEncoded = $jsonData;
//API Url
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token='.$access_token;
//Initiate cURL.
$ing = curl_init($url);
//Tell cURL that we want to send a POST request.
curl_setopt($ing, CURLOPT_POST, 1);
//Attach our encoded JSON string to the POST fields.
curl_setopt($ing, CURLOPT_POSTFIELDS, $jsonDataEncoded);
//Set the content type to application/json
curl_setopt($ing, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
//Execute the request
if(!empty($input['entry'][0]['messaging'][0]['message'])){
$result = curl_exec($ing);
}
$message = "";
$postback = $input['entry'][0]['messaging'][0]['postback']['payload'];
if ( $postback != "" ) {
$foundPostback = true;
$message = $postback;
}else{
$message = $input['entry'][0]['messaging'][0]['message']['text'];
}
// 전송 메세지 처리 부분
// 전송 타입을 선택한다. button / text
$send_type = "text";
if( $message == "안녕" ) {
$send_txt = "어 안녕";
}else{
if( $message == "이벤트" ) {
$send_txt = "아래링크중에 골라봐!";
$send_type = "button";
}else if( $message == "기타" ){
$send_txt = "아래 목록을 순서대로 클릭해봐! 누를떄마다 메뉴가 바뀔꺼야!";
$send_type = "postback";
}else if( $message == "선택" ) {
$send_txt = "아래중에 골라봐!";
$send_type = "quick";
}else{
$send_txt = "뭐라고?";
$send_type = "text";
}
}
//API Url
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token='.$access_token;
//Initiate cURL.
$ch = curl_init($url);
$r = array();
// json data encoding
if( $send_type == "button" ) {
$r["recipient"]["id"] = $sender;
$r["message"]["attachment"]["type"] = "template";
$r["message"]["attachment"]["payload"]["template_type"] = "button";
$r["message"]["attachment"]["payload"]["text"] = $send_txt;
$r["message"]["attachment"]["payload"]["buttons"][0]["type"] = "web_url";
$r["message"]["attachment"]["payload"]["buttons"][0]["url"] = "https://www.naver.com";
$r["message"]["attachment"]["payload"]["buttons"][0]["title"] = "네이버";
$r["message"]["attachment"]["payload"]["buttons"][1]["type"] = "postback";
$r["message"]["attachment"]["payload"]["buttons"][1]["title"] = "네이버1";
$r["message"]["attachment"]["payload"]["buttons"][1]["payload"] = "1";
}else if( $send_type == "postback" ){
// 버튼 선택형 오류인지 동작불가 - 원인 확인중
$payload = "aaa";
$r["recipient"]["id"] = $sender;
$r["message"]["attachment"]["type"] = "template";
$r["message"]["attachment"]["payload"]["template_type"] = "button";
$r["message"]["attachment"]["payload"]["text"] = $send_txt;
$r["message"]["attachment"]["payload"]["buttons"][0]["type"] = "postback";
$r["message"]["attachment"]["payload"]["buttons"][0]["title"] = "이벤트";
$r["message"]["attachment"]["payload"]["buttons"][0]["payload"] = "이벤트";
$r["message"]["attachment"]["payload"]["buttons"][1]["type"] = "postback";
$r["message"]["attachment"]["payload"]["buttons"][1]["title"] = "선택";
$r["message"]["attachment"]["payload"]["buttons"][1]["payload"] = "선택";
$r["message"]["attachment"]["payload"]["buttons"][2]["type"] = "postback";
$r["message"]["attachment"]["payload"]["buttons"][2]["title"] = "기타";
$r["message"]["attachment"]["payload"]["buttons"][2]["payload"] = "기타";
}else if( $send_type == "quick" ) {
// 선택형
$r["recipient"]["id"] = $sender;
$r["message"]["text"] = $send_txt;
$r["message"]["quick_replies"][0]["content_type"] = "text";
$r["message"]["quick_replies"][0]["title"] = "이벤트";
$r["message"]["quick_replies"][0]["payload"] = "이벤트";
$r["message"]["quick_replies"][1]["content_type"] = "text";
$r["message"]["quick_replies"][1]["title"] = "기타";
$r["message"]["quick_replies"][1]["payload"] = "기타";
}else{
$r["recipient"]["id"] = $sender;
$r["message"]["text"] = $send_txt;
}
$jsonData = json_encode($r);
//Encode the array into JSON.
$jsonDataEncoded = $jsonData;
//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);
//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Execute the request
if(!empty($input['entry'][0]['messaging'][0]['message']) || $foundPostback ){
$result = curl_exec($ch);
}
반응형
'개발 > php' 카테고리의 다른 글
[php] sleep / usleep 사용법 (0) | 2019.09.20 |
---|---|
php implode 배열을 문자열로 합치기 (0) | 2019.09.19 |
php explode 문자열 자르기 (0) | 2019.09.19 |
index.php 없애기 .htaccess 샘플(php) (0) | 2019.09.18 |
php 엑셀 출력시 공백 혹은 이상한 문자가 나올 경우!! (0) | 2019.09.17 |
Comments