django 集成个推_Django网站添加WebIM
這篇文章發表于2011年,已經過期。建議使用融云、個推等方案。
大多數站長的都遇到過這種情況:當你依靠自己網站的內容,辛辛苦苦的吸引了一群用戶,他們漸漸的形成一個志同道合的小圈子,然后,他們注冊了一個QQ群,從此以后你的網站不再有人光顧……為了避免這種悲劇不斷重演,WebIM工具應運而生。用戶訪問這個網站時,能看到其他正在瀏覽這個網站的用戶,彼此可以即時聊天。比如Ntalker,它可以添加好友,有群組功能,即時消息,但只有asp和php的SDK,于是我試著把它搬到了Django網站上,可以訪問onlinegalgame.com查看效果。
Register
首先申請一個Ntalker的帳號,填寫郵箱、用戶名、網站程序等,如果你是用的是DZ之類的國內主流PHP論壇程序,它會提供現成的安裝包。可惜我們用的是Django,沒有現成的可用,所以網站程序要選擇其他,然后下載SDK。話說這個SDK實在簡陋得可以,只有幾個txt文件。注冊完成后進入管理頁面,可以定制樣式。
Install
在頁面標簽之后添加以下JS代碼(放在body之前很詭異的會產生兩個標簽)
im_connectIM("onlinegalgame_com", "{{request.user.id}}", "{{request.user.username}}", "{{request.session.session_key}}", '');
onlinegalgame_com:網站的siteid,通常是你的域名生成的,注冊以后下載SDK,可以在sitekey.txt文件中找到;
user.id和user.name:獲得登錄的用戶名,如果沒有用戶名(未登錄),則為空,空用戶名在Ntalker中會顯示用戶名name;
session_key:不為空即可,但為了安全性最好保證唯一,這里直接用django生成的session_key。
引入之后,頁面下方已經可以看到WebIM的工具欄了。在Ntalker網站能修改樣式,icon,添加圖標等。但點擊窗口會提示登錄失敗,還需要配置API。
API
在自己的網站上定義一個API(比如我定義的是http://onlinegalgame.com/imxml),Ntalker會對這個地址發起請求,通常是以query參數的形式(比如登錄會通過http://onlinegalgame.com/imxml?query=login來請求),然后解析返回的xml文件,做出相應的行為。還以下的做法不夠規范——沒辦法,這東西就沒給一個規范的SDK——我省略了配置文件,直接利用API來處理所有的請求。
首先編輯urls.py文件,添加API對應的URL
urlpatterns = patterns('',
#……
url(r'^imxml$', 'onlinegalgame.views.imxml', name='imxml'),
#……
這樣當Ntalker服務器對API發起請求的時候,就會由根目錄下views.py文件的imxml函數來處理。編輯views.py文件:
from django.http import HttpResponse
def imxml(request):
#幾個config參數,這個例子中沒什么用,可以省略
im_enable = True
im_float = True
im_siteid = 'onlinegalgame_com'
#處理query參數的行為
querytype = request.GET.get('query')
query = {
'siteprofile' : 'custom'+
'utf-8'+
'Onlinegalgame',
'login' : '3.0.0'+
'true',
'addbuddy' : 'true'+
'accepted'
}
res = '%s' % query[querytype]
if querytype == None:
return HttpResponse('Invalid query paramter')
else:
return HttpResponse(res,mimetype='application/xml')#返回xml
訪問 http://onlinegalgame.com/imxml?query=siteprofile 可以看到返回的xml文件了。只要定義了對login就行了處理,就可以登錄了,如果登錄失敗,登錄Ntalker的后臺,確定這里的狀態是已開通,否則就像我一樣,苦等他們的技術客服上線然后聯系客服讓他幫忙開通吧…
SDK中規定有6個必須的API,這里只寫了3個,所以只能實現登錄、添加好友之類的行為。
Afterword
其實騰訊收購康盛之后,我原以為他們的目標是在康盛的DZ、UCHOME之上,推出WebIM的,但目前除了添加了QQ用戶登錄的接口,QQ消息推送以外,沒看到其他新動作。Ntalker的缺陷很多,但也是目前我能找到的唯一一個解決方案,希望能有更多類似的WebIM系統,這對于不愿歸順騰訊的用戶來說終歸是件好事。當然,各位如果知道同類型的WebIM(即使聊天,好友/群功能)希望能在評論中告知。
總結
以上是生活随笔為你收集整理的django 集成个推_Django网站添加WebIM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pwm一个时间单位_详解STM32的PW
- 下一篇: dfmea文件_DFMEA和PFMEA的