revmsg / mobilize
用于与革命消息的Mobilize API一起工作的库
Requires
- php: >=5.3.0
- guzzle/guzzle: *
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):告诉对象在实例化时是否从短信请求中提取数据;默认为trueresponseLength(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():返回作为一个数组的inputssetInputs($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对象中的endSession和response组件表示。动态内容响应可以通过以下方法进行操作
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)注销活动会话。
###列表
####属性