跳轉到內容

RapidSMS 開發人員指南/個人倉庫

來自華夏公益教科書

正如在程式碼結構中提到的,我們的主要工作場所將是一個新的資料夾。

首先建立這個資料夾

cd ~
mkdir sms

此資料夾需要遵循一些指導。它將是您的 RapidSMS 主目錄。從現在開始,除非另有說明,否則我們始終認為是在此資料夾內,它將被稱為您的儲存庫

local.ini 檔案

[編輯 | 編輯原始碼]

local.ini 檔案是主要的 rapidsms 配置檔案。它包含 rapidsms 特定的配置、應用程式特定的配置和後端特定的配置。它實際上覆蓋了來自核心預設的rapidsms.ini 檔案。

Django 配置不可直接訪問,因為它儲存在 rapidsms 核心內。

建立一個名為local.ini 的檔案,並新增以下內容

[rapidsms]
    apps=logger,admin,webapp,ajax,httptester,echo
    backends=http

[log]
    level=debug
    file=/tmp/rapidsms.log

[database]
    engine=sqlite3
    name=rapidsms.db

[http]
    host=localhost
    port=1338

[httptester]
    host=localhost
    port=1338

必需的[部分]rapidsmsdatabaseapps= 是您要使用的所有 rapidsms 應用程式的逗號分隔列表。上面的列表將允許您透過 Web 介面測試系統。backends= 是要啟動的後端的逗號分隔列表。後端是一個處理傳入/傳出訊息的模組。最流行的是gsm 後端(也稱為pygsm),它透過物理連線的 GSM 調變解調器傳送/接收訊息。在上面的示例中,我們使用了http 後端,它允許您模擬調變解調器的行為以測試傳入/傳出訊息。

在 RapidSMS 中,您可以透過為其建立一個部分,從local.ini 檔案中配置應用程式(和後端)。

[http] 部分配置http 後端。[httptester] 部分配置 httptester 應用程式。使用相同的主機和埠為httptesterhttp,以便 HTTP 測試程式應用程式正常工作。

apps 資料夾

[編輯 | 編輯原始碼]

RapidSMS 預計內部有一個apps 資料夾。

mkdir apps

__init__.py

[編輯 | 編輯原始碼]

由於您的儲存庫都包含在PYTHON_PATH 中,因此它們被視為 Python 模組。因此,您需要在兩者內建立一個空的__init__.py 檔案,以將其標記為模組。

touch __init__.py
touch apps/__init__.py''

manage.py / rapidsms 指令碼

[編輯 | 編輯原始碼]

每個 Django 應用程式都包含一個manage.py 指令碼,它提供了對 Django 相關操作的訪問許可權:建立資料庫等。RapidSMS 需要修改此指令碼的版本以啟動路由器

建立一個名為rapidsms 的檔案,內容如下

#!/usr/bin/env python
# vim: ai ts=4 sts=4 et sw=4 encoding=utf-8

import sys, os
from os import path

# figure out where all the extra libs (rapidsms and contribs) are
libs=[os.path.abspath('lib'),os.path.abspath('apps')] # main 'rapidsms/lib'
try:
    for f in os.listdir('contrib'):
        pkg = path.join('contrib',f)
        if path.isdir(pkg) and \
                'lib' in os.listdir(pkg):
            libs.append(path.abspath(path.join(pkg,'lib')))
except:
    # could be several reasons:
    # no 'contrib' dir, 'contrib' not a dir
    # 'contrib' not readable, in any case
    # ignore and leave 'libs' as just
    # 'rapidsms/lib'
    pass

# add extra libs to the python sys path
sys.path.extend(libs)

# import manager now that the path is correct
from rapidsms import manager

if __name__ == "__main__":
    manager.start(sys.argv)

確保它具有執行許可權。

chmod +x ./rapidsms

連結第三方應用程式

[編輯 | 編輯原始碼]

local.ini 檔案中,我們請求啟動幾個應用程式。RapidSMS 預計這些應用程式位於您的apps/ 子資料夾中,就像任何常規應用程式一樣。

按如下方式建立符號連結以將它們包含在您的儲存庫中

cd apps
ln –s  /home/user_name/sources/rapidsms/apps/admin
ln –s  /home/user_name/sources/rapidsms/apps/ajax
ln –s  /home/user_name/sources/rapidsms/apps/locations
ln –s  /home/user_name/sources/rapidsms/apps/logger
ln –s  /home/user_name/sources/rapidsms/apps/patterns
ln –s  /home/user_name/sources/rapidsms/apps/reporters
ln –s  /home/user_name/sources/rapidsms/apps/webapp

資料庫

[編輯 | 編輯原始碼]

RapidSMS 與 Django 一樣,是資料庫驅動的。

建立資料庫

[編輯 | 編輯原始碼]

local.ini 檔案中,您指定了資料庫連線資訊。在那裡,就像使用 Django 一樣,您可以選擇不同的引擎(MySQL、SQLite 等)。

配置完成後,使用rapidsms 指令碼的syncdb 命令

./rapidsms syncdb

此命令將根據 Django/Models 約定,建立local.ini 中命名的所有應用程式的資料庫模式。如果此命令因解析器錯誤而失敗,請修改您的 local.ini 檔案,以便您刪除在沒有括號的情況下開始的行中的前導空格/製表符。

安裝 · 執行 RapidSMS

華夏公益教科書