跳转到内容

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

华夏公益教科书