扩展 twilio 插件以使用 WordPress REST API
Extending twilio plugin to work with WordPress REST API
我已经完成了有关 sending and receiving SMS 与 WordPress 的 twilio 教程。我将它们集成到我的测试安装中,然后将它们合并为一个。 (接收一个很短,虽然它不是一个完整的 "receive" 而不是盲目的响应)。
然后我遇到了 themebound 的 twilio-core
,所以我看了一下,很快我得到了一个致命错误,因为它们都使用 twilio helper library。为了测试,我只是停用了第一个并激活了第二个,这引出了我的第一个问题:
这两个使用相同的库,并且都使用过require_once
。每个人都将它加载到自己的插件文件夹中。图书馆的原名是twilio-php-master
,一个改名为twilio
另一个twilio-php
。这一点都不重要,因为它们位于不同的位置。致命错误是由于内部工作具有相同的函数名称。
如何测试其他插件帮助库的存在并使用它来代替我安装的那个?
WordPress 加载插件的顺序如何?很可能如果我的首先加载......好吧,我什至不能走那么远,因为它只是试图同时激活它而崩溃。
--- 我们现在进入下一个问题 ---
因此,我可能会选择 twilio-core
版本,因为它看起来更有特色并且可以在 github 上使用,即使作者不太活跃(有几个月前没有讨论的拉取请求)。
我想扩展其中一个发送插件(任一)关于从 twilio 接收消息的功能。目前,这两个示例都使用 classes 进行发送,而我使用的接收不是。因此,我刚刚将它添加到主插件文件(带有插件元数据的文件)的末尾。 (请注意,这不是上述致命错误的原因,这发生在我开始合并发送和接收之前)。
因为接收涉及 REST API 而不是由系统上的用户操作启动(即管理区域中的某人通过管理面板访问 class),我'我不确定 a) 我把它放在那里是否合适,b) 在进一步处理收据时使用 class 内的发送函数。我的最终目标是分析传入的消息并通过 twilio 或其他应用程序将其转发出去,甚至只是将其记录在 wordpress 本身中。
我应该将接收 functionality/plugin 与发送分开吗?
这引出了对我来说最难的问题:
我如何扩展任一插件以使发送功能可用于我的接收插件? (这是我困惑的一部分来自) -->> 因为这两个插件都只在管理区运行,REST API 不是真正的用户在前端运行,我如何在管理区?请问是"just be available"吗?我必须在 public 端复制它们吗?然后如果是这样,是否也有必要在管理区域中也有它?
编辑: 关于下面的评论之一,我已经测试过并且 twl_send_sms
在加载助手后可用。我要做的是确定一种方法来查看助手是否已加载(函数存在测试可能就足够了),如果是,则根据需要要求或不要求我的版本。
从收到的消息中,我现在可以单独转发新消息。但是我怎样才能将初始入站消息的参数传递给回调函数呢?例如,如何使用 POST
数据填充 $sms_in
?
function register_receive_message_route() {
register_rest_route( 'sms/v1', '/receiver_sms', array(
'methods' => 'POST',
'callback' => 'trigger_receive_sms',
) );
}
function trigger_receive_sms($sms_in = '') {
/* we have three things to do:
* 1: send the reply to twilio,
* 2: craft a reply,
* 3: save the data message to the database
*/
echo header('content-type: text/xml');
echo ('<?xml version="1.0" encoding="UTF-8"?>');
echo ('<Response>');
echo (' <Message>Thanks, someone will be in contact shortly.</Message>');
echo ('</Response>');
$args = array(
'number_to' => '+xxxxxxxxxxx',
'message' => "Test Worked!\n$sms_in",
);
twl_send_sms( $args );
此处为 Twilio 开发人员布道师。
在我看来,您的发送功能(无论您可以从 twilio-core
中得到什么)与您的接收功能是分开的。所以我可能会将它们拆分为两个插件,并按照 the post you mentioned 中关于如何编写接收和响应 SMS 消息的内容的说明进行操作。这样,twilio-core
可以使用它捆绑的 Twilio 库,而您的接收插件将不需要使用库(它只需要使用 TwiML 响应,这只是 XML)。
虽然我不确定我理解问题 4 的最后一部分,但您不能真正与插件的接收端点交互,因为它所做的只是 return XML给你。这是为了让 Twilio 与之互动。
编辑
在回答您更新的问题时,当您的回调由 POST 请求触发时,它会传递一个 WP_REST_Request
对象。此对象包含 POST 主体,参数可以通过数组访问来访问。
function trigger_receive_sms($request) {
echo $request['Body'];
}
好消息,如果您打算 send two messages then you can do so entirely with TwiML. You just need to use two <Message>
s:
echo ('<?xml version="1.0" encoding="UTF-8"?>');
echo ('<Response>');
echo (' <Message>Thanks, someone will be in contact shortly.</Message>');
echo (' <Message to="YOUR_OTHER_NUMBER">It worked!</Message>');
echo ('</Response>');
这样你就不用担心其他图书馆了。
我已经完成了有关 sending and receiving SMS 与 WordPress 的 twilio 教程。我将它们集成到我的测试安装中,然后将它们合并为一个。 (接收一个很短,虽然它不是一个完整的 "receive" 而不是盲目的响应)。
然后我遇到了 themebound 的 twilio-core
,所以我看了一下,很快我得到了一个致命错误,因为它们都使用 twilio helper library。为了测试,我只是停用了第一个并激活了第二个,这引出了我的第一个问题:
这两个使用相同的库,并且都使用过require_once
。每个人都将它加载到自己的插件文件夹中。图书馆的原名是twilio-php-master
,一个改名为twilio
另一个twilio-php
。这一点都不重要,因为它们位于不同的位置。致命错误是由于内部工作具有相同的函数名称。
如何测试其他插件帮助库的存在并使用它来代替我安装的那个?
WordPress 加载插件的顺序如何?很可能如果我的首先加载......好吧,我什至不能走那么远,因为它只是试图同时激活它而崩溃。
--- 我们现在进入下一个问题 ---
因此,我可能会选择
twilio-core
版本,因为它看起来更有特色并且可以在 github 上使用,即使作者不太活跃(有几个月前没有讨论的拉取请求)。我想扩展其中一个发送插件(任一)关于从 twilio 接收消息的功能。目前,这两个示例都使用 classes 进行发送,而我使用的接收不是。因此,我刚刚将它添加到主插件文件(带有插件元数据的文件)的末尾。 (请注意,这不是上述致命错误的原因,这发生在我开始合并发送和接收之前)。
因为接收涉及 REST API 而不是由系统上的用户操作启动(即管理区域中的某人通过管理面板访问 class),我'我不确定 a) 我把它放在那里是否合适,b) 在进一步处理收据时使用 class 内的发送函数。我的最终目标是分析传入的消息并通过 twilio 或其他应用程序将其转发出去,甚至只是将其记录在 wordpress 本身中。
我应该将接收 functionality/plugin 与发送分开吗?
这引出了对我来说最难的问题:
我如何扩展任一插件以使发送功能可用于我的接收插件? (这是我困惑的一部分来自) -->> 因为这两个插件都只在管理区运行,REST API 不是真正的用户在前端运行,我如何在管理区?请问是"just be available"吗?我必须在 public 端复制它们吗?然后如果是这样,是否也有必要在管理区域中也有它?
编辑: 关于下面的评论之一,我已经测试过并且 twl_send_sms
在加载助手后可用。我要做的是确定一种方法来查看助手是否已加载(函数存在测试可能就足够了),如果是,则根据需要要求或不要求我的版本。
从收到的消息中,我现在可以单独转发新消息。但是我怎样才能将初始入站消息的参数传递给回调函数呢?例如,如何使用 POST
数据填充 $sms_in
?
function register_receive_message_route() {
register_rest_route( 'sms/v1', '/receiver_sms', array(
'methods' => 'POST',
'callback' => 'trigger_receive_sms',
) );
}
function trigger_receive_sms($sms_in = '') {
/* we have three things to do:
* 1: send the reply to twilio,
* 2: craft a reply,
* 3: save the data message to the database
*/
echo header('content-type: text/xml');
echo ('<?xml version="1.0" encoding="UTF-8"?>');
echo ('<Response>');
echo (' <Message>Thanks, someone will be in contact shortly.</Message>');
echo ('</Response>');
$args = array(
'number_to' => '+xxxxxxxxxxx',
'message' => "Test Worked!\n$sms_in",
);
twl_send_sms( $args );
此处为 Twilio 开发人员布道师。
在我看来,您的发送功能(无论您可以从 twilio-core
中得到什么)与您的接收功能是分开的。所以我可能会将它们拆分为两个插件,并按照 the post you mentioned 中关于如何编写接收和响应 SMS 消息的内容的说明进行操作。这样,twilio-core
可以使用它捆绑的 Twilio 库,而您的接收插件将不需要使用库(它只需要使用 TwiML 响应,这只是 XML)。
虽然我不确定我理解问题 4 的最后一部分,但您不能真正与插件的接收端点交互,因为它所做的只是 return XML给你。这是为了让 Twilio 与之互动。
编辑
在回答您更新的问题时,当您的回调由 POST 请求触发时,它会传递一个 WP_REST_Request
对象。此对象包含 POST 主体,参数可以通过数组访问来访问。
function trigger_receive_sms($request) {
echo $request['Body'];
}
好消息,如果您打算 send two messages then you can do so entirely with TwiML. You just need to use two <Message>
s:
echo ('<?xml version="1.0" encoding="UTF-8"?>');
echo ('<Response>');
echo (' <Message>Thanks, someone will be in contact shortly.</Message>');
echo (' <Message to="YOUR_OTHER_NUMBER">It worked!</Message>');
echo ('</Response>');
这样你就不用担心其他图书馆了。