웹마스터 팁

대부분의 내용이 인터넷에서 참조했습니다.


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;		//오류
	}
}

?>

제목 글쓴이 날짜
확장변수 다중선택에서 체크박스의 선택개수를 제한하기 [5] file 우야꼬 2008.05.30
링크 사이트 제작을 위한 어드바이스 - Fade In MouseOver - [3] file Hammer 2008.06.06
링크 사이트 제작을 위한 어드바이스 - MouseOver Preview - [6] file Hammer 2008.06.10
[1원짜리팁] 큰 이미지 썸네일 못생성& 확장변수 원하는 곳에 배치하기 ^^ [2] 파파민 2008.06.23
초보 헤메다가 팁//인쇄영역 확장변수 포함 [8] file 리히토 2008.07.14
게시판 목록을 확장 변수로 정렬하기 [5] 대암지기 2008.10.10
확장변수 별로 작성 및 열람 권한 설정하기 [7] 대암지기 2008.10.11
통합검색에서 확장변수 검색하기 [5] StyleD 2008.10.12
제로보드XE XML파일 표준화 [2] BlueGATE 2008.11.13
전화번호 형식의 확장변수를 목록에 출력하고 싶을 때 serendip 2009.01.06
첨부파일 보이기 숨기기 옵션추가 [18] ☜ TeRy ☞ 2009.02.10
게시판에서 사이트 관리자만 볼수있는 항목 만들기 [1] ☜ TeRy ☞ 2009.02.13
플래너 최근문서(위젯)에 카테고리색 적용, Dday 적용, 지난 일정 출력 여부 조절 [7] file 주상태 2009.02.21
확장변수전용 권한설정 게시판스킨 미권한자에게 출력 (''깜박''오류?) 보고 file 0su 2009.02.25
Faceoff 버젼에서 확장변수 마음대로 배치하기 ^^ 파파민 2009.03.13
확장변수 출력 방법 초 심플하게 적어봅니다. [15] 라르게덴 2009.03.16
특정그룹 멤버 표시 위젯에서 이름 순 정렬하기 [2] file 이재한744 2009.03.30
주민등록 입력 폼 1.2.0 [55] file 개돌 2009.04.10
게시판에서 확장 변수를 쓰는 경우 1.2.0 이상 버전으로 업그레이드하기 전에 패치하시기 바랍니다. [5] file mooo 2009.04.14
BNU님의 Planner XE 1.2 버젼(일정관리) [9] file 개돌 2009.04.21