revmsg/mobilize

用于与革命消息的Mobilize API一起工作的库

dev-master 2015-12-22 21:16 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:15:23 UTC


README

##关于Mobilize库

革命消息,LLC Mobilize SMS应用程序的PHP客户端库。

这个库分为两部分:MobilizeHook类,用于构建接收来自Mobilize平台请求的web服务,以及Mobilize API库,用于直接使用API。这两个部分相互独立,但通常一起使用。

##Revmsg\Mobilize\Hook类

此类允许轻松访问出现在以下位置的Mobilize webhook

  • 动态内容消息流组件
  • URL消息流组件
  • 元数据更新钩子

###属性

  • endSession (boolean, 默认为 true):当输出动态内容对象时,此值告诉Mobilize是继续到下一个消息组件(true)还是等待用户进一步的输入(false)。
  • response (string):当放置在动态内容对象中时,将发送回用户的消息。请注意,response可以是任何长度,但消息将在到达responseLength属性之前最后一个空格处被截断。
  • format (xml|json):这告诉对象期望在有效载荷中接收什么格式,以及如何输出动态内容对象。
  • method (get|post):这告诉对象在哪里查找输入,要么在URL字符串中,要么在请求体中。
  • responseLength:从钩子发送的短信消息中允许的响应长度。默认为美国的160。
  • inputs (array):由Mobilize提供的所有值的数组

###实例化

实例化函数:new \Revmsg\Mobilize\Hook(format, method, retrieve, responseLength);

  • format ('xml'|'json'):实例将用于从短信请求中提取数据并输出动态内容对象的格式;默认为'xml'
  • method ('get'|'post'):数据从短信请求发送到对象的方法;默认为'post'
  • retrieve (boolean):告诉对象在实例化时是否从短信请求中提取数据;默认为true
  • responseLength (int):设置动态内容响应的最大长度;默认为美国的160

###使用Mobilize数据

一旦类被实例化,MobilizeHook对象应该在inputs属性中包含Mobilize发送的所有数据。Mobilize将始终发送包含所有输入的请求体,尽管并非所有输入都将用于所有钩子,并且通过将method设置为'get',MobilizeHook对象可以仅在URL字符串中查找消息数据。

动态内容和URL钩子将为以下变量设置请求体中的值

  • msisdn:用户的手机号码。通常这将是以12位格式(十位数字前面加01)。
  • mobileText:用户发送到简码的最后一条消息的完整文本。
  • keywordName:用户用于发起请求的关键词。
  • keywordId:用于发起请求的关键词的内部标识符。如果没有关键词发起请求(例如,如果流程是广播的),这将是指示符的标识符。
  • shortCode:用户与之交互的简码

元数据更新钩子将为以下变量在请求体中设置值

  • msisdn:如上所述。
  • subscriberId:更新元数据的订阅者的唯一标识符。
  • metadataId:更新的元数据字段的唯一标识符。
  • oldValue:一个数组,包含更新前的字段值。
  • newValue:包含元数据字段新值的字符串。

可以使用以下方法对这些值进行操作和访问

  • getInputs():返回作为一个数组的inputs
  • setInputs($arr):使用一个key=>value数组一次性设置多个输入,覆盖由SMS用户提供的那些。
  • setInput($name, $value):将inputs中列出元素的值设置为提供的值
  • retrieveInputs(string $method=*xml|json):将inputs的值设置为通过类型和方法指定的值。
  • cleanMobileText(string $keyword=null, $mobileText=null):如果存在,从消息的开头移除keywordName,返回修改后的mobileText的值。这在许多情况下很有用,其中可能使用关键字来触发脚本,但关键字本身并不用作输入。

###动态内容

Mobilize的动态内容流组件向指定的URL发送数据有效载荷并等待响应,该响应包含Mobilize的消息发送指令以及是否应保持打开的会话窗口,将更多消息定向到相同的URL。这些通过MobilizeHook对象中的endSessionresponse组件表示。动态内容响应可以通过以下方法进行操作

  • getMethod():返回method的值
  • setMethod(string):将method设置为默认的'post'或可选的'get'。
  • getFormat():返回format的值
  • setFormat(string):将format设置为默认的'xml'或可选的'json'。
  • getEnd():返回endSession的值
  • setEnd(bool):将endSession设置为true或false。
  • getResponse():返回response的值
  • setResponse(string):设置response的值
  • output():返回一个正确格式化的动态内容对象,指定endSession和response(response将被截断到设置responseLength之前的最后一个完整单词)。

##Mobilize API包装器

此包装器允许直接操作Mobilize平台中的对象,并且需要平台认证凭据才能工作。请联系info@revolutionmessaging.com了解消息计划并获得凭据。

###通用用法 Mobilize平台中的每种类型的对象都由一个单独的类表示,这些类的实例都可以独立处理。对象可以通过以下三种方式之一创建

  • new object();:在本地创建一个空对象
  • new object(string);:根据给定的字符串ID从Mobilize中获取对象
  • new object(array);:在本地创建一个对象,其属性与数组中的属性相匹配

####标准属性 许多对象共享类似的属性;虽然并非所有对象都共享这些属性,但它们出现时,以下所有属性都具有类似定义。以下表格描述了这些属性以及它们在每种标准方法中的使用方式

对象的属性可以按照以下方式访问和更改

  • $object->property = value:将对象的属性设置为value,前提是value有效且属性存在。
  • $object->setVariables(array):将对象的所有值设置为与数组中的值匹配
  • $object->set(property,value):将对象的属性设置为值,前提是值有效且属性存在。此方法在成功时返回对象本身,因此可以链式调用以一次性设置多个值或与其他方法一起使用。
  • print $object:将对象用作字符串会产生其属性的JSON表示形式。

####标准方法平台对象具有对应标准CRUD(创建、检索、更新、删除)操作的方法。除非以下另有说明,这些方法的工作方式如下:

  • object->create($version='v1', $session) 在Mobilize平台上创建一个与本地对象属性匹配的对象。
  • object->retrieve($objectId, $version='v1', $session) 将本地对象更新为与平台上的现有对象具有$objectId属性的对象的属性匹配。
  • object->update($version='v1', $session) 修改平台上的本地对象副本以匹配其本地属性。注意,此方法要求对象的id属性与平台上的id属性匹配。
  • object->delete($version='v1', $session) 删除与本地对象的id属性匹配的Mobilize平台上的对象。本地对象将被保留。

在所有CRUD方法中,$version的默认值为'v1',但可以更改为使用Mobilize API的较新版本。$session是用于会话认证的可选参数;如果省略,该方法尝试使用常量REVMSG_MOBILIZE_KEY的值作为API密钥。

###认证有三种方式可以认证对Mobilize平台的调用:会话认证或每次请求认证。对于将用于多个用户的应用程序,会话认证最佳;如果您正在构建将始终使用相同凭据的应用程序,则使用API密钥最佳。

#####会话认证要创建会话,实例化认证类并调用其create()方法。您可以在实例化时设置用户名和密码,或之后设置。

$session = new Authentication();
$session->set('username',username)->set('password',password)->create();

$session = new Authentication(
    array(
        'username' => 'username',
        'password' => 'password'
    )
);
$session->create();

您需要将会话传递到后续操作中。

#####API密钥认证您还可以通过定义常量REVMSG_MOBILIZE_KEY为有效的Mobilize API密钥,单独对每个请求进行Mobilize API的认证。此常量用于任何不包含会话的API请求。

#####方法

######检索$session->retrieve($version, $session)提供与活动会话相对应的用户信息,如果存在,或如果设置了活动API密钥。

#####删除$session->delete($version, $session)注销活动会话。

###列表

####属性