웹마스터 팁
마이피플봇을 이용한 마이피플 알리미 (푸시서비스) 이용하기
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
멋지네요
| 제목 | 글쓴이 | 날짜 |
|---|---|---|
| 닉네임 중복체크 버그 해결방법 [7] | 소렌트. | 2014.06.29 |
| 마이피플봇을 이용한 마이피플 알리미 (푸시서비스) 이용하기 [4] | garnecia | 2014.06.01 |
| 에디터가 활성화 되지 않을시... [1] | 똑디 | 2013.11.06 |
| 에디터 컴포넌트에 현재 mid 값 넘겨주기. [1] | 애니즌 | 2014.07.03 |
|
jqm(jQuery Mobile) 사용 시 XE의 CSS 와 충돌할 때
| Canto | 2014.07.03 |
| [javascript] 기초강좌 | 4장. 비교제어문(if문) | hiwebs | 2014.07.02 |
| [javascript] 기초강좌 | 03 논리연산자, 비트, 삼항연산자, 기타연산자 | hiwebs | 2014.07.02 |
| [10원팁] 서버에 계정추가후 새로설치하는데 CSS가 깨진다? [3] | 키스미베이베 | 2014.02.27 |
| 회원가입시 닉네임 특수문자 제한하기 [10] | 절망린 | 2009.06.06 |
| [nginx] Rewrite 예외 설정 | okiz | 2014.06.30 |
| 관리자 비밀번호 분실시 phpmyadmin을 이용하여 재설정하는 방법 [6] | elancer | 2014.03.11 |
|
BlogAPI 활용하기
| 맞장 | 2014.06.29 |
| min.js min.css 정리해서 보기 | Happyphp | 2014.06.26 |
| 부트스트랩 css 팁 [3] | 돼지코구뇽 | 2014.04.05 |
| 추천과 추천포인트 관련 팁 [8] | 고진감래 | 2009.09.30 |
| 관리자가 글 쓸때는 분류를 선택 안 해도 등록되도록 (공지글을 쓸때를 위해) 개선 [2] | sejin7940 | 2014.06.21 |
| 템플릿 파일에서 일반 PHP 코드 사용 [3] | 화니군 | 2007.08.28 |
| XE에서 신디케이션 제거하기 [1] | mAKEkr | 2014.06.20 |
|
에디터에서 나눔고딕 웹폰트, 기본글꼴로 적용하기(구글API이용)
[6]
| 애니즌 | 2014.06.06 |
| 관리자페이지에서 콘텐츠->파일 에서 등록된 파일 전체 리스트에 이미지가 바로 나타나도록 [2] | sejin7940 | 2014.06.19 |