剛找到一個有趣的情況:
假設
機器人1: 會自動發訊息通知某事 且有 互動功能(且指令錯誤會回覆)
機器人2: 有互動功能(且指令錯誤會回覆)
且有一方必須是要能從 "非msn client" 加入機器人帳號為聯絡人加入;
另一方需要是可直接在 "msn client" 加入機器人帳號為聯絡人
=================================================
那麼;機器人彼此成為聯絡人時,會形成一個loop,彼此一直傳送訊息永不停止
將較之下 可直接在 "msn client" 加入機器人帳號為聯絡人 的程式,較容易
遭受病毒攻擊,反之;也無可避免
目前我沒有找到好的方法來避免,當然可以加入黑名單 使用發訊息的頻率來避
免大量的互相發訊,但我覺得這些都不是最好的方法,因為無法防範於事前
我的雲端生活網 - Life+
Showing posts with label msnSDK訊息控制開發套件. Show all posts
Showing posts with label msnSDK訊息控制開發套件. Show all posts
Thursday, March 19, 2009
Wednesday, December 17, 2008
如何直接使用瀏覽器發送MSN訊息
<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>
使用瀏覽器就能對MSN發送訊息
使用程式運用msnSDK傳遞MSN訊息真的很簡單,這個例子我們直接使用瀏覽器來發送MSN訊息,現在要找到一種語言不支援這些介面還真不容易(msnSDK支援ADO/CGI/SOAP 三種介面)
--------------
STEP 1:
首先要使用msnSDK 發送訊息,必須取得使用SDK權限
---------------------------------------------------------------
http://59.120.234.84:8082/msnSDK/msn_cgi-win32?FUNC=GETSPID&USERID=apiblogt7&PASSWD=msnsdkt
瀏覽器得到回應(SPID 是一個隨機碼)
1\tSPID
或是
0\t失敗原因
比如: (請注意! 5M9AzR700NWZbbAf 會一直變動,而一旦通過認證這個SPID 可使用6個小時不需重複取用SPID,過期再取即可)
1 5M9AzR700NWZbbAf
--------------
STEP 2:
邀請聯絡人,我想大家都知道,要透過MSN發送訊息,得要對方是我們自己的聯絡人,要特別注意的是XXXXXXXX@hotmail.com得要是真正的MSN地址,因為發送MSN訊息時,得要對方再線上(範例是這樣使用,不過;msnSDK本身可以自動判斷對方是否再線上決定是否發送離線訊息...這需要參考文件,可自行下載文件)
---------------------------------------------------------------
http://59.120.234.84:8082/msnSDK/msn_cgi-win32?FUNC=REGISTER&UIDS=XXXXXXXX@hotmail.com&SESSION=5M9AzR700NWZbbAf
瀏覽器得到回應
1\t成功訊息
或是
0\t失敗原因
<<此時註冊為機器人聯絡人的帳號會在msn 上收到邀請成為聯絡人,選擇受邀請為聯絡人後>>
--------------
STEP 3:
發送訊息給XXXXXXXX@hotmail.com (這必須要是真的MSN帳號,且這個帳號必須在線上,如需傳遞離線訊息...請參考文件)
---------------------------------------------------------------
http://59.120.234.84:8082/msnSDK/msn_cgi-win32?UIDS=XXXXXXXX@hotmail.com&MSG=測試&flags=0&FUNC=SENDMSG&ENCODING=BIG5&SESSION=5M9AzR700NWZbbAf
瀏覽器得到回應
1\t成功訊息
或是
0\t失敗原因
--------------
其他功能可自行下載文件參考,msnSDK 同時支援YAHOO及MSN 的訊息傳遞(傳送與接收),且線上使用免費;歡迎所有有興趣的人直接在網路上應用它,如欲合作,可將合作提案寄到sonet.all@gmail.com
Tuesday, November 18, 2008
關於msnSDK 使用上的問題,特此說明
http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3056858&SiteID=14
這篇文章有提到關於msnSDK 產品使用的問題,因為個人疏忽沒有特別提出這個問題,特此說明
API 使用權限的帳號密碼,直接寫在範例程式裡,所以;個人使用確實是免費的,而此API 同時支援MSN/YAHOO即時通,如果有需要使用非程式範例內的帳號密碼,也可以跟我索取(sonet.all@gmail.com),至少以上這些都是免費提供使用,文件也可以自行參考下載,個人使用與商業版功能完全一致;沒有差異,唯一的差異是商業版會安裝在購買的使用者機器上,且依照販售合約提供相關維護保固...,而個人使用則不提供這些服務或保證
這篇文章有提到關於msnSDK 產品使用的問題,因為個人疏忽沒有特別提出這個問題,特此說明
API 使用權限的帳號密碼,直接寫在範例程式裡,所以;個人使用確實是免費的,而此API 同時支援MSN/YAHOO即時通,如果有需要使用非程式範例內的帳號密碼,也可以跟我索取(sonet.all@gmail.com),至少以上這些都是免費提供使用,文件也可以自行參考下載,個人使用與商業版功能完全一致;沒有差異,唯一的差異是商業版會安裝在購買的使用者機器上,且依照販售合約提供相關維護保固...,而個人使用則不提供這些服務或保證
Labels:
msn messenger SDK,
msnbot,
msnlib,
MSNP15,
msnSDK,
msnSDK訊息控制開發套件,
msn機器人
Sunday, November 16, 2008
3分鐘學會使用程式發送msn訊息, VB6.0篇(五)
<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>
msnSDK訊息控制開發套件 同時支援MSN/Yahoo即時通 訊息雙向傳遞
VB6.0 的範例我們使用ADO介面來處理,其他語言也可以這樣做,可參考文件(文末提供下載處),另外;下面的程式碼重要的部份只有參數不同,其他大同小異,可參考紅字部分
ps.也請參考 msnSDK的使用流程
================================
Dim RS As New ADODB.Recordset
Dim URL As String
Dim Session As String '授權碼
'取得API 的使用權利
Private Sub GETSPID_Click()
Dim RET As String
On Error GoTo ErrHandle
'API 連接位置
URL = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32"
'apiblogt5/msnsdkt 取得API 使用權限的帳號/密碼
RS.Open URL & "?FUNC=GETSPID&USERID=apiblogt5&PASSWD=msnsdkt&RETTYPE=ADO"
Do While Not (RS.EOF)
'查詢回應
'RS(0) 0 認證失敗 1認證成功
'RS(1) 失敗傳回 失敗原因 / 成功傳回 SESSION
'
If (RS(0) = 0) Then
MsgBox "認證失敗,無法使用API"
Else
'取得認證授權使用API
'授權碼
Session = RS(1)
End If
RS.MoveNext
Loop
RS.Close
Exit Sub
ErrHandle:
MsgBox "無法連接伺服器,或是參數不正確"
End Sub
'邀請聯絡人
Private Sub REGISTER_Click()
Dim RET As String
On Error GoTo ErrHandle
'API 連接位置
URL = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32"
'邀請聯絡人 XXXXXXXX@hotmail.com 請填正確的聯絡人,執行此SUB 後
'msnSDK 會邀請這個人加入聯絡人,必須加入聯絡人後才能發送訊息
'session 由GETSPID 所取得的session
RS.Open URL & "?UIDS=XXXXXXXX@hotmail.com&FUNC=REGISTER&RETTYPE=ADO&SESSION=" &
Session
Do While Not (RS.EOF)
'查詢回應
'RS(0) 0 邀請失敗 1邀請成功
'RS(1) 失敗傳回 失敗原因 / 成功訊息
'
If (RS(0) = 0) Then
MsgBox "邀請失敗"
Else
MsgBox RS(1)
End If
RS.MoveNext
Loop
RS.Close
Exit Sub
ErrHandle:
MsgBox "無法連接伺服器,或是參數不正確"
End Sub
'發送MSN/YAHOO即時通訊息
Private Sub SENDMSG_Click()
Dim RET As String
On Error GoTo ErrHandle
'API 連接位置
URL = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32"
'傳送訊息(MSG)給 XXXXXXXX@hotmail.com(必須是此聯絡人已接受邀請)
'flags 1 當聯絡人不在線上則依據系統設定處理(系統設定為傳送離線訊息) 0 當連絡人不在線上,則不送任何訊息
'encoding 標示目前傳送訊息的中文編碼
'rettype 設定為使用ADO
'session 由GETSPID 所取得的session
RS.Open URL & "?UIDS=XXXXXXXX@hotmail.com&MSG=測試&flags=0&FUNC=SENDMSG&ENCODING=BIG5&RETTYPE=ADO&SESSION=" & Session
Do While Not (RS.EOF)
'查詢回應
'RS(0) 0 傳送失敗 1傳送成功
'RS(1) 失敗傳回 失敗原因 / 成功訊息
'
If (RS(0) = 0) Then
MsgBox "傳送失敗"
Else
MsgBox RS(1)
End If
RS.MoveNext
Loop
RS.Close
Exit Sub
ErrHandle:
MsgBox "無法連接伺服器,或是參數不正確"
End Sub
其他更詳細的參數可以參考msnSDK訊息控制開發套件程式介面說明書
Labels:
3分鐘學會使用程式發送msn訊息,
msnbot,
msnlib,
MSNP15,
msnSDK,
msnSDK訊息控制開發套件,
msn機器人,
vb,
vbmsn
Friday, November 14, 2008
MSN機器人開發套件 demo篇
MSN機器人開發套件影片,msnSDK本身可以同時支援MSN/YAHOO即時通,影片中for MSN的字樣指的是這個影片展示的是MSN部分,另外這個影片沒有展示與msn互動的部份,msnSDK本身能夠做到MSN/YAHOO互動雙向訊息的應用;若有公司企業欲洽談合作,不論合作方式的大或小,可洽sonet.all@gmail.com
http://tw.youtube.com/watch?v=hbQ1Va_IqzM
http://tw.youtube.com/watch?v=hbQ1Va_IqzM
Thursday, November 13, 2008
3分鐘學會使用程式發送msn訊息, Perl篇(四)
<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>
msnSDK訊息控制開發套件 同時支援MSN/Yahoo即時通 訊息雙向傳遞
perl 的範例我們使用soap 介面來處理,其他語言也可以這樣做,可參考文件(文末提供下載處)
wsdl位置:http://59.120.234.84:8082/msnSDK/genwsdl-win32
ps.也請參考 msnSDK的使用流程
================================
#!/usr/bin/perl
use SOAP::Lite;
#取得使用api 的權限
sub setspid
{
my $session_ret=SOAP::Lite->uri('http://59.120.234.84:8082/MSN')
->proxy('http://59.120.234.84:8082/msnSDK/msn_soap-win32')
->GETSPID('apiblogt4','msnsdkt')->result;
my ($code,$session)=split("\t",$session_ret);
$session=~tr/\r\n //d;
return $session;
}
#註冊聯絡人
sub register
{
my $sret= setspid();
my $session_ret=SOAP::Lite->uri('http://59.120.234.84:8082/MSN')
->proxy('http://59.120.234.84:8082/msnSDK/msn_soap-win32')
->REGISTER('要加入聯絡人的msn/yahoo帳號',$sret)->result;
print $session_ret;
}
#傳送訊息
sub sendmsg
{
my $sret= setspid();
my $msg_ret = SOAP::Lite->uri('http://59.120.234.84:8082/MSN')->
proxy('http://59.120.234.84:8082/msnSDK/msn_soap-win32')->
SENDMSG( '要傳送訊息聯絡人的msn/yahoo帳號', '欲傳送的訊息', 'utf-8','1',$sret)->result;
print $msg_ret;
}
其他更詳細的參數可以參考msnSDK訊息控制開發套件程式介面說明書
Labels:
3分鐘學會使用程式發送msn訊息,
msnlib,
MSNP15,
msnSDK,
msnSDK訊息控制開發套件,
msn機器人,
msn開發套件,
perl,
perlmsn,
pmsn
Wednesday, November 12, 2008
msnSDK的使用流程說明
<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>
3分鐘學會使用程式發送系列文章所使用的流程
STEP1:
取得SPID: GETSPID請參考各種語言所使用的帳號/密碼(每篇文章的程式碼內有),取得SPID以取得使用API 的權力
STEP2:
註冊聯絡人: 要發訊息給別人,需要先讓他成為聯絡人,因此這必須要是合法聯絡人(msn/yahoo帳號),而此時這個帳號會收到邀請通知(請見下圖)
STEP3:
傳送MSN/YAHOO訊息: SENDMSG(uids傳遞訊息的目的MSN/YAHOO帳號,msg欲傳遞的訊息內容,encoding傳遞的訊息中文編碼(utf-8/big5/gbk/gb2312),flags 0 對方離線則不送訊息 1對方離線則訊息是否傳送由系統決定,session GETSPIS得到的session值)
msnSDK擁有非常多的FUNCTION,也包含互動式的機器人選單,其他功能可參考msnSDK訊息控制開發套件程式介面說明書
Labels:
3分鐘學會使用程式發送msn訊息,
msnlib,
MSNP15,
msnSDK,
msnSDK訊息控制開發套件,
msn開發套件
Monday, November 10, 2008
3分鐘學會使用程式發送msn訊息, Java篇(三)
<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>
msnSDK訊息控制開發套件 同時支援MSN/Yahoo即時通 訊息雙向傳遞
ps.也請參考 msnSDK的使用流程
================================
public class clsMsnSDK {
public static void main(String[] args) throws Exception {
String UserName = "apiblogt3";
String Password = "msnsdkt";
//取得SPID
String strRet = GETSPID(UserName,Password);
String[]tmp = strRet.split("1\t");
String strValue = tmp[1].replace('\n',' ').trim();
String SPID = strValue;
System.out.println(SPID);
//註冊聯絡人
String Email = "xxxxx@hotmail.com"; //填入msn/yahoo聯絡人,勿使用這個預設值
String ret = Register(Email,SPID);
System.out.println(ret);
//發訊息
String strMsg = "Hello_World!"; //輸入訊息 (未做 Url EnCoded)
String MsgRet = SendMsg(Email,strMsg,SPID);
System.out.println(MsgRet);
}
//取得SPID
public static String GETSPID(String UserName,String Password) throws Exception {
String strUrl = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32";
String strValue ="?FUNC=GETSPID&USERID=" + UserName + "&PASSWD=" + Password;
java.net.HttpURLConnection urlConnection= null;//定義一個HTTP連線
java.net.URL url= new java.net.URL(strUrl + strValue);//定義一串URL
urlConnection=(java.net.HttpURLConnection)url.openConnection();//將URL餵給HttpURLConnection
urlConnection.setRequestMethod("POST");//設定參數傳遞方式(GET or POST)
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();//開啟連線
java.io.InputStream GetHTML=urlConnection.getInputStream();//內容儲存下來
int leng =0;
byte[] Data = new byte[100];
byte[] totalData = new byte[0];
int totalLeg =0;
do{
leng = GetHTML.read(Data);//(Data);
if(leng>0){
totalLeg += leng;
byte[] temp = new byte[totalLeg];
System.arraycopy(totalData, 0, temp, 0, totalData.length);
System.arraycopy(Data, 0, temp, totalData.length, leng);
totalData = temp;
}
}while(leng>0);
String tmp = new String(totalData,"UTF-8");
urlConnection.disconnect();
return tmp;
}
//註冊
public static String Register(String UIDS,String SPID) throws Exception{
String strUrl = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32";
String strValue = "?FUNC=REGISTER&UIDS=" + UIDS + "&SESSION="+ SPID;
java.net.HttpURLConnection urlConnection= null;//定義一個HTTP連線
java.net.URL url= new java.net.URL(strUrl + strValue);//定義一串URL
urlConnection=(java.net.HttpURLConnection)url.openConnection();//將URL餵給HttpURLConnection
urlConnection.setRequestMethod("POST");//設定參數傳遞方式(GET or POST)
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();//開啟連線
java.io.InputStream GetHTML=urlConnection.getInputStream();//內容儲存下來
int leng =0;
byte[] Data = new byte[100];
byte[] totalData = new byte[0];
int totalLeg =0;
do{
leng = GetHTML.read(Data);//(Data);
if(leng>0){
totalLeg += leng;
byte[] temp = new byte[totalLeg];
System.arraycopy(totalData, 0, temp, 0, totalData.length);
System.arraycopy(Data, 0, temp, totalData.length, leng);
totalData = temp;
}
}while(leng>0);
String tmp = new String(totalData,"UTF-8");
urlConnection.disconnect();
return tmp;
}
//傳送MSN 訊息
public static String SendMsg(String UIDS,String MSG,String SPID) throws Exception{
String strUrl = "http://59.120.234.84:8082/msnSDK/msn_cgi-win32";
String strValue ="?FUNC=SENDMSG&UIDS=" + UIDS + "&MSG=" + MSG +"&Encoding=BIG5&flag=0&Session=" + SPID;
java.net.HttpURLConnection urlConnection= null;//定義一個HTTP連線
java.net.URL url= new java.net.URL(strUrl + strValue);//定義一串URL
urlConnection=(java.net.HttpURLConnection)url.openConnection();//將URL餵給HttpURLConnection
urlConnection.setRequestMethod("POST");//設定參數傳遞方式(GET or POST)
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();//開啟連線
java.io.InputStream GetHTML=urlConnection.getInputStream();//內容儲存下來
int leng =0;
byte[] Data = new byte[100];
byte[] totalData = new byte[0];
int totalLeg =0;
do{
leng = GetHTML.read(Data);//(Data);
if(leng>0){
totalLeg += leng;
byte[] temp = new byte[totalLeg];
System.arraycopy(totalData, 0, temp, 0, totalData.length);
System.arraycopy(Data, 0, temp, totalData.length, leng);
totalData = temp;
}
}while(leng>0);
String tmp = new String(totalData,"UTF-8");
urlConnection.disconnect();
return tmp;
}
}
其他更詳細的參數可以參考msnSDK訊息控制開發套件程式介面說明書
Labels:
3分鐘學會使用程式發送msn訊息,
JAVA,
javamsn,
jmsn,
msn bot,
msn messenger SDK,
msnlib,
MSNP15,
msnSDK,
msnSDK訊息控制開發套件,
msn機器人,
msn開發套件
Subscribe to:
Posts (Atom)