跳到主要內容

3分鐘學會使用程式發送msn訊息, ASP篇(六)

<imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊,詳見相關資訊>



msnSDK訊息控制開發套件 同時支援MSN/Yahoo即時通 訊息雙向傳遞


ASP 的範例我們使用ADO介面來處理,其他語言也可以這樣做,可參考文件(文末提供下載處),另外;下面的程式碼重要的部份只有參數不同,其他大同小異,可參考紅字部分


ps.也請參考 msnSDK的使用流程

(抱歉!太久沒碰ASP,不過基本上;下面這個範例可正確發送MSN訊息)
<%
'--
'---STEP1 取得API 使用權限
'--

on error resume next
Set xmlHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
'如果遇到中文,請使用Server.URLEncode 來處理
'比如 : ...&pname=Server.URLEncode("中文姓名")&...

URL= "http://59.120.234.84:8082/msnSDK/msn_cgi-win32?FUNC=GETSPID&USERID=apiblogt6&PASSWD=msnsdkt&RETTYPE=ADO"

xmlHTTP.open "GET", URL, false
xmlHTTP.send()

if err.description <>"" then
Set xmlHTTP= Nothing
response.write "無法連接遠端伺服器," & err.description
response.end
end if

'--
'將得到的訊息存入 myRS_....xml
'--
set myStream = Server.CreateObject("ADODB.Stream")
myStream.Open
myStream.Charset = "big5"
myStream.WriteText xmlHTTP.ResponseText
myStream.Position = 0

'---
'防止重複的process 存取xml
'---
Febber = Split("1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z", ",")
For I = 0 To 3
Randomize
keychar = keychar & Febber(Int((62 * Rnd) + 1) - 1)
next
myXMLfile = Server.Mappath("./myRS_" & keychar & ".xml")
myStream.SaveToFile myXMLfile
myStream.Close

'--
'取得myRS_$random.xml 的結果
'--
set rs = server.createobject("adodb.recordset")
rs.Open myXMLfile
Do While Not (rs.EOF)
if (rs(0)=1) then
spid=rs(1)
response.write "取得SPID=" & rs(1) & "
"
else
response.write "認證失敗=" & rs(0)& "," & rs(1) & "
"
response.end
end if
rs.MoveNext
Loop
rs.Close


'--
'刪除暫存檔
'--
set FSO = Server.Createobject("Scripting.FileSystemObject")
Fso.DeleteFile myXMLfile

'--
'釋放使用的物件
'--
set FSO = Nothing
Set myStream = Nothing
Set rs = Nothing
Set xmlHTTP= Nothing
'--

'--
'---STEP2 邀請聯絡人
'--
Set xmlHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
'如果遇到中文,請使用Server.URLEncode 來處理
'比如 : ...&pname=Server.URLEncode("中文姓名")&...
'請注意!
'邀請聯絡人 XXXXXXXX@hotmail.com 請填正確的聯絡人,執行此SUB 後
'msnSDK 會邀請這個人加入聯絡人,必須加入聯絡人後才能發送訊息
'session 由GETSPID 所取得的 spid

URL= "http://59.120.234.84:8082/msnSDK/msn_cgi-win32?FUNC=REGISTER&UIDS=XXXXXXXX@hotmail.com&SESSION=" & spid & "&RETTYPE=ADO"

xmlHTTP.open "GET", URL, false
xmlHTTP.send()

if err.description <>"" then
Set xmlHTTP= Nothing
response.write "無法連接遠端伺服器," & err.description
response.end
end if

'--
'將得到的訊息存入 myRS_....xml
'--
set myStream = Server.CreateObject("ADODB.Stream")
myStream.Open
myStream.Charset = "big5"
myStream.WriteText xmlHTTP.ResponseText
myStream.Position = 0

'---
'防止重複的process 存取xml
'---
Febber = Split("1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z", ",")
For I = 0 To 3
Randomize
keychar = keychar & Febber(Int((62 * Rnd) + 1) - 1)
next
myXMLfile = Server.Mappath("./myRS_" & keychar & ".xml")
myStream.SaveToFile myXMLfile
myStream.Close

'--
'取得myRS_$random.xml 的結果
'--
set rs = server.createobject("adodb.recordset")
rs.Open myXMLfile
Do While Not (rs.EOF)

response.write "邀請聯絡人回應=" & rs(0) & "," & rs(1) & "," & rs(2) & "
"

rs.MoveNext
Loop
rs.Close

'--
'刪除暫存檔
'--
set FSO = Server.Createobject("Scripting.FileSystemObject")
Fso.DeleteFile myXMLfile

'--
'釋放使用的物件
'--
set FSO = Nothing
Set myStream = Nothing
Set rs = Nothing
Set xmlHTTP= Nothing
'--

'--
'---STEP3 發送訊息
'--
Set xmlHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
'如果遇到中文,請使用Server.URLEncode 來處理
'比如 : ...&pname=Server.URLEncode("中文姓名")&...
'請注意!
'傳送訊息給 XXXXXXXX@hotmail.com 請填正確的聯絡人,執行此SUB 後
'msnSDK 會邀請這個人加入聯絡人,必須加入聯絡人後且這個人在線上才能
'發送訊息,如要傳離線訊息請參考文件
'session 由GETSPID 所取得的 spid
msg=Server.URLEncode("測試")

URL= "http://59.120.234.84:8082/msnSDK/msn_cgi-win32?UIDS=XXXXXXXX@hotmail.com&MSG=" & msg &"&flags=0&FUNC=SENDMSG&ENCODING=BIG5&RETTYPE=ADO&SESSION=" & spid

xmlHTTP.open "GET", URL, false
xmlHTTP.send()

if err.description <>"" then
Set xmlHTTP= Nothing
response.write "無法連接遠端伺服器," & err.description
response.end
end if

'--
'將得到的訊息存入 myRS_....xml
'--
set myStream = Server.CreateObject("ADODB.Stream")
myStream.Open
myStream.Charset = "big5"
myStream.WriteText xmlHTTP.ResponseText
myStream.Position = 0

'---
'防止重複的process 存取xml
'---
Febber = Split("1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z", ",")
For I = 0 To 3
Randomize
keychar = keychar & Febber(Int((62 * Rnd) + 1) - 1)
next
myXMLfile = Server.Mappath("./myRS_" & keychar & ".xml")
myStream.SaveToFile myXMLfile
myStream.Close

'--
'取得myRS_$random.xml 的結果
'--
set rs = server.createobject("adodb.recordset")
rs.Open myXMLfile
Do While Not (rs.EOF)

response.write "傳送訊息回應=" & rs(0) & "," & rs(1) & "," & rs(2) & "
"

rs.MoveNext
Loop
rs.Close

'--
'刪除暫存檔
'--
set FSO = Server.Createobject("Scripting.FileSystemObject")
Fso.DeleteFile myXMLfile

'--
'釋放使用的物件
'--
set FSO = Nothing
Set myStream = Nothing
Set rs = Nothing
Set xmlHTTP= Nothing
'--


%>

其他更詳細的參數可以參考msnSDK訊息控制開發套件程式介面說明書

留言

Li Scooter寫道…
請問for ASP版本之免費MSN機器人,只要MSN主機連不上,整個系統就會當掉~是否有解午突方法?
薛共和寫道…
這並非msnsdk本身的問題,可能您要尋找看看xmlhttp是否有非同步的呼叫方式,或是能不能設定timeout 的時間
薛共和寫道…
在google 找一下"xmlHTTP 非同步操作",這個關鍵字,或是在相關位置加上 On Error Resume Next試看看

這個網誌中的熱門文章

怎麼在網路上註冊成為youbike 會員?

新版官網請參考  怎麼在網路上註冊成為youbike 會員?   http://rd-program.blogspot.tw/2014/04/youbike.html 網路的申請步驟類似,下面將以網路申請來說明申請步驟:申請的時候需要準備悠遊卡、或晶片信用卡,以及手機門號。 1. 請先登入ubike網址: http://www.youbike.com.tw/ ,登入後選擇【正體中文】,要選英文也可以啦! 2. 在螢幕的右上角選擇【註冊】。 3.點擊【開始註冊】。 4. 點擊【同意】。(沒有其他選擇?) 5. 輸入您的【手機號碼】以及【認證碼】,然後按【送出】。這時候手機會收到ubike傳來的簡訊,通之驗證碼,有四個阿拉伯數字。 6. 輸入帳號(手機號碼)、驗證碼(ubike傳到手機的簡訊)、密碼,然後按【下一步】。 7. 還沒完成喔!這裡告訴你如何租車及還車的步驟。把螢幕拉到最下面,記得勾選【我已清楚瞭解租還車步驟】,然後按【下一步】。 8. 選擇悠遊卡或是晶片信用卡,然後輸入卡片號碼,卡片號碼請參卡畫面又下方的提示位置,請注意有些卡號可能已經模糊不清,可能無法輸入。每隻手機不只可以輸入一個卡號。 9. 填寫個人姓名及Email帳號,如果不想收到相關訊息就把前面的打勾取消。按【確認】按鈕。 10. 恭喜您註冊成功,可已開始使用YouBike了。

3分鐘學會使用程式發送msn訊息,php篇(一)

---電子發票整合方案 http:// rd-program.blogspot.com/ 2012/03/blog-post.html --- < imoo msn機器人測試平台,將於下週三(2009.6.24)取消所有未經申請試用的認證資訊 , 詳見相關資訊 > msnSDK訊息控制開發套件 同時支援MSN/Yahoo即時通 訊息雙向傳遞 ps.也請參考 msnSDK的使用流程 ================================ 步驟一:取得api 使用的權限(GETSPID) $file="http://59.120.234.84:8082/msnSDK/msn_cgi-win32?FUNC=GETSPID&USERID=apiblogt1&PASSWD=msnsdkt" ; $myArray=''; $mySession=''; $myResult=''; $getline=''; if (!($fp = fopen($file, "r"))) { die("could not open XML input"); } while ($getline = fgets($fp, 4096)) { $myArray=explode("\t",$getline); $myResult=$myArray[0]; $mySession= $myArray[1]; } fclose($fp); if ($myResult=="0") { echo "get session fail... "; exit(); } else { //$_SESSION["mySession"]= $mySession; echo "get session=".$mySession." "; } echo "<a href='REGISTER.php?uids=".$_GET["uids...