웹마스터 팁

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


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함수

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
31
32
33
34
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

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<?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;       //오류
    }
}
 
?>

제목 글쓴이 날짜
관리자만 볼 수 있는 로그인 기록 페이지 만들기 퍼니엑스이 2015.12.07
rsync 와 ssh root 접속을 막고 인증키로만 백업하기 마루디자인 2015.11.25
리눅스 백업 1.0 ibin 2015.11.23
이제는 유튜브동영상 손쉽게 다운로드 받으세요 ミ:つÞ [7] 딴죽을거는남자 2015.11.02
파시ㅇ 예제입니다. [3] file 유창화 2015.11.12
CentOS PHP TS/NTS 모드 설치 방법 마루디자인 2015.11.09
글 수정일때만 업데이트 아이콘이 뜨게 하고 싶은 경우 ( 댓글 입력시에는 별도로 안 뜨고) sejin7940 2015.11.01
모바일 글쓰기 페이지 경고창 [2] file 자동차 2015.09.26
자바스크립트로 get값 추철하기 [1] 한꼬마 2015.10.27
게시판 하단 검색대상의 순서,노출항목 들 제어하는 방법 [1] sejin7940 2013.10.15
한 XE1.8.11 게시판을 다른 XE1.8.11 웹에 옮기려면 어떤 절차를 밟아야 되나요? [3] 유샤인 2015.10.24
누리고쇼핑몰 postcodify 주소모듈 설치시 최근배송지 클릭시 오류해결방법 [5] garnecia 2015.03.27
member_srl 만으로 닉네임값 출력하기 키큰아이 2015.10.24
게시판 작성시 본문에 자동으로 삽입 스크립트 한꼬마 2015.10.22
cron 에서 서비스 컨트롤에 따른 소소한 팁 마루디자인 2015.10.22
폰갭 admob 이용버전이 바뀌었습니다. 한꼬마 2015.10.19
[자료실 모듈] 경로 사용 해제후에 자료 정보 수정시 경로값 필요 문구 발생시 불금 2015.10.18
크롬브라우저 모바일 개발시 해상도 조절 [1] file 픽스소프트 2014.09.16
외부 페이지에서 회원 프로필 정보(확장변수) 나타내기 한꼬마 2015.10.14
jquery 플러그인: rolVideo.min.js 공개하였습니다. [1] 딴죽을거는남자 2015.10.03