웹마스터 팁
마이피플봇을 이용한 마이피플 알리미 (푸시서비스) 이용하기
2014.06.01 16:16
대부분의 내용이 인터넷에서 참조했습니다.
callback.php 는 공개된 github에서 참조했구요.
문제되면 삭제하겠습니다.
마이피플 알리미 가 한참 유행이다가 사라졌는데,
이번에 마이피플 봇을 등록해서 거기서 푸시를 보내는 방법이 있더라구요.
마이피플봇을 등록해주시구요.
http://dna.daum.net/apis/mypeople
여기를 참조
callback.php 는 아래 코드를 참조하시구요
제가 생각한 방법은
1.회원정보에 확장변수로 mypeople을 항목을 추가합니다.
2.거기에 마이피플 버디 아이디를 입력하는데,
버디아이디는 마이피플->친구찾기->ID/Email에서 위에서 등록한 마이피플봇이름 ex) example.bot 으로 등록하면 콜백함수로
버디아이디를 알려줍니다.
3.확장변수 mypeople을 받아서, 알림이 들어가는 부분에 send로 날려준다.
참 쉽죠 ? 제가 워낙 초보라. 매끄럽지만 않지만, 고수님들은 멋진 애드온 혹은 모듈 만들어주실거라 봅니다.
원랜 send부분도 callback.을 이용해서 해야하는데.. 제가 잘 몰라서~ ㅎㅎ
기본적으로 curl이 사용가능해야한 서버환경이어야 합니다.
*send함수
function MyPeople_send($buddyId, $msg) { $API_URL_PREFIX = "https://apis.daum.net"; $MYPEOPLE_BOT_APIKEY = "api코드를 입력해주세요 "; $API_URL_POSTFIX = "&apikey=" .$MYPEOPLE_BOT_APIKEY; //메시지 전송 url 지정 $url = $API_URL_PREFIX."/mypeople/buddy/send.xml"; //CR처리. \n 이 있을경우 에러남 $msg = urlencode(str_replace(array("\n",'\n'), "\r", $msg)); //파라미터 설정 $postData = array(); $postData['buddyId'] = $buddyId; $postData['content'] = $msg; $postData['apikey'] = $MYPEOPLE_BOT_APIKEY; $postVars = http_build_query($postData); //cURL을 통한 http요청 (cURL은 php 4.0.2 이상에서 지원합니다.) $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postVars); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); $result = curl_exec($ch); curl_close($ch); //결과 출력 //echo "sendMessage"; debugprint($result); return FALSE; }
callback.php
<?php /** * 마이피플 봇 API 코드 샘플입니다. * * 마이피플 봇 API를 사용방법에 대해 안내합니다. * 알림콜백을 받은 뒤 action값에 따라 처리하는 방식입니다. * * PHP version 5.4.7 * * @category Mypopple Bot API * @author Daum DNA Lab (http://dna.daum.net) * @copyright Daum DNA Lab * @link http://dna.daum.net/apis/mypeople * */ $API_URL_PREFIX = "https://apis.daum.net"; $MYPEOPLE_BOT_APIKEY = "여기에 등록한 api키를 입력해주세요 "; $API_URL_POSTFIX = "&apikey=" .$MYPEOPLE_BOT_APIKEY; switch($_POST['action']) { case "addBuddy": greetingMessageToBuddy(); //봇을 친구로 등록한 사용자의 이름을 가져와 환영 메시지를 보냅니다. break; case "sendFromMessage": debugprint('1'); echoMessageToBuddy(); //말을 그대로 따라합니다. break; case "createGroup": groupCreatedMessage(); //그룹대화방이 생성되었을때 그룹대화를 만든사람과 대화에 참여한 친구들의 이름을 출력합니다. break; case "inviteToGroup": groupGreetingMeesage(); //그룹대화방에 친구가 새로 추가될경우 누가 누구를 초대했는지 출력합니다. break; case "exitFromGroup": groupExitAlertMessage(); //그룹대화방에서 친구가 나갔을 경우 정보를 출력합니다. break; case "sendFromGroup": filterGroupMessage(); //그룹 대화방에서 특정 메시지가 왔을때 반응합니다. break; } function greetingMessageToBuddy() { $buddyId = $_POST['buddyId']; //봇을 친구추가한 친구ID $msg = '안녕하세요 알리미입니다.'.getBuddyName($buddyId). " 님의 buddy id는 ".$buddyId.'입니다'; sendMessage("buddy", $buddyId, $msg); } function echoMessageToBuddy() { $buddyId = $_POST['buddyId']; //메시지를 보낸 친구ID $msg = $_POST['content']; //메시지 내용 sendMessage("buddy", $buddyId, $msg); } function groupCreatedMessage() { $buddyId = $_POST['buddyId']; //그룹 대화를 만든 친구 ID $content = $_POST['content']; //그룹 대화방 친구 목록(json형태) $groupId = $_POST['groupId']; //그룹ID $buddys = json_decode($content, true); $buddysName = ""; foreach($buddys as $key => $value) { $buddysName .= " " .getBuddyName($buddys[$key][buddyId]); } //그룹에 생성메시지 보내기 $msg = getBuddyName($buddyId). "님이 새로운 그룹대화를 만들었습니다. 그룹멤버는 " .$buddysName. " 입니다."; sendMessage("group", $groupId, $msg); } function groupGreetingMeesage() { $buddyId = $_POST['buddyId']; //그룹 대화방에 초대한 친구 ID $content = $_POST['content']; // 그룹 대화방에 초대된 친구 정보 $groupId = $_POST['groupId']; //그룹ID $buddys = json_decode($content, true); $buddysName = ""; foreach($buddys as $key => $value) { $buddysName .= " " .getBuddyName($buddys[$key][buddyId]); } //그룹에 환영 메시지 보내기 $msg = getBuddyName($buddyId). "님께서 " .$buddysName. "님을 초대하였습니다."; sendMessage("group", $groupId, $msg); } function groupExitAlertMessage() { $buddyId = $_POST['buddyId']; //그룹 대화방을 나간 친구 ID $groupId = $_POST['groupId']; //그룹 대화방ID //그룹에 퇴장알림 메시지 보내기 $msg = "슬프게도..." .getBuddyName($buddyId). "님께서 우리를 떠나갔어요."; sendMessage("group", $groupId, $msg); } function filterGroupMessage() { $groupId = $_POST['groupId']; //그룹 대화방ID $buddyId = $_POST['buddyId']; //그룹 대화방에서 메시지를 보낸 친구ID $content = $_POST['content']; //메시지 내용 // "마이피플"이라는 단어가 포함된 메시지가 나오면 반응 if (strpos($content, '마이피플') !== false) { $msg = getBuddyName($buddyId). "님, 역시 마이피플이 짱이죠?"; sendMessage("group", $groupId, $msg); } //퇴장처리 if (strcmp($content, '퇴장') == 0 || strcmp($content, 'exit') == 0) { exitGroup($groupId); //그룹대화방 퇴장 } } function exitGroup($groupId) { global $API_URL_PREFIX, $API_URL_POSTFIX; $url = $API_URL_PREFIX."/mypeople/group/exit.xml?groupId=" .$groupId .$API_URL_POSTFIX; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); $result = curl_exec($ch); curl_close($ch); } function sendMessage($target, $targetId, $msg) { global $API_URL_PREFIX, $API_URL_POSTFIX, $MYPEOPLE_BOT_APIKEY; //메시지 전송 url 지정 $url = $API_URL_PREFIX."/mypeople/" .$target. "/send.xml?apikey=" .$MYPEOPLE_BOT_APIKEY; //CR처리. \n 이 있을경우 에러남 $msg = urlencode(str_replace(array("\n",'\n'), "\r", $msg)); //파라미터 설정 $postData = array(); $postData[$target."Id"] = $targetId; $postData['content'] = $msg; $postVars = http_build_query($postData); //cURL을 이용한 POST전송 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postVars); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); $result = curl_exec($ch); curl_close($ch); //결과 출력 echo "sendMessage"; var_dump($result); } function getBuddyName($buddyId) { global $API_URL_PREFIX, $API_URL_POSTFIX; //프로필 정보보기 url 지정 $url = $API_URL_PREFIX."/mypeople/profile/buddy.xml?buddyId=" .$buddyId .$API_URL_POSTFIX; //cURL을 통한 http요청 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); $result = curl_exec($ch); curl_close($ch); //결과 출력 echo "getBuddyName"; var_dump($result); //결과 파싱 및 리턴 $xml = simplexml_load_string($result); if ($xml->code == 200) { return $xml->buddys->name; } else { return null; //오류 } } ?>
댓글 4
-
KrteamENT
2014.06.03 07:17
이거 애드온있지 않...은 다른건가.. -
garnecia
2014.06.04 14:13
기존 마이피플 위젯을 이용한 서비스는 종료되어서 새로운걸 찾다가
찾은 방법이예요~
-
송실장
2014.07.04 12:07
아... 애드온.... 정말 기다리고 있어요.. 마이피플봇..ㅠㅠ
-
XE러버
2014.07.04 14:50
멋지네요
제목 | 글쓴이 | 날짜 |
---|---|---|
조건별로 스킨 바꾸기 | 라르게덴 | 2008.07.11 |
댓글 입력창에 배경 이미지 삽입하는 방법 [4] | 팔공산 | 2008.07.11 |
최근게시물에 권한주어서 회원만 내용물보게하기 [1] | 팔공산 | 2008.07.11 |
다른 브라우저에서 내 사이트가 어떻게 보이나 확인하자~ [3] | 비나무 | 2008.07.10 |
최고관리자 이외에는 ''회원정보보기''를 막기 [13] | 비나무 | 2008.07.10 |
방명록 스킨을 통한 글 작성시 임시저장 가능케 하기(수정) | 라르게덴 | 2008.07.08 |
1.04 엡데이트후 재설치등으로 로그인안될때 해결법 [5] | 좀비이 | 2008.07.08 |
폼메일 응용해서 쓰세요... [6] | 코리아프럼 | 2008.07.08 |
FTP로 지워지지 않는 파일 삭제방법. [9] | pakjce | 2008.07.05 |
list게시판 목록 제목 줄바꿈 안하기 [4] | 팔공산 | 2008.07.05 |
메뉴에 이미지 버튼 사용하기 팁이요~ 이미지첨부! [3] | Zzini.net | 2008.07.05 |
1차 메뉴에서 하위 메뉴 없을때 생기는 여백 없애는 방법 [7] | 제로시오 | 2008.07.04 |
[팁]페이지별 댓글 출력 초간단 팁.. [4] | 키티나 | 2008.07.04 |
주소창에 보이는 아이콘 넣기..제로보드 XE에서 [2] | 은바가지 | 2008.07.03 |
위지웍 에디터를 오페라 브라우져에서는 사용 안하기 | 라르게덴 | 2008.07.02 |
동일한 계정내에서의 포워딩 방법 [2] | 하이쿠 | 2008.07.01 |
php폼메일 관련 한번 올려봅니다. 사용하실분들은 수정하셔서 사용해보세요.. [10] | 코리아프럼 | 2008.06.26 |
[1원짜리팁] 큰 이미지 썸네일 못생성& 확장변수 원하는 곳에 배치하기 ^^ [2] | 파파민 | 2008.06.23 |
Autolink에 주소 복사 추가 & 본문 글 주소 복사 추가 [4] | 탑심 | 2008.06.22 |
업그레이드 쉽고,안전하게 하기 [5] | wannabewize | 2008.06.21 |