{"id":22277,"date":"2022-05-30T15:49:14","date_gmt":"2022-05-30T12:49:14","guid":{"rendered":"https:\/\/oz-plugin.com\/?p=22277"},"modified":"2022-07-26T12:03:34","modified_gmt":"2022-07-26T09:03:34","slug":"sms-integration-with-other-sms-services-providers-in-ozapp-plugin","status":"publish","type":"post","link":"https:\/\/oz-plugin.com\/ru\/sms-integration-with-other-sms-services-providers-in-ozapp-plugin\/","title":{"rendered":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0421\u041c\u0421 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 OzApp"},"content":{"rendered":"<p>\u041d\u0430\u0448\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0447\u0430\u0441\u0442\u043e \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043c\u0441 \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0422\u0432\u0438\u043b\u0438\u043e \u0438 \u0421\u041c\u0421\u0426.<br \/>\n\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u043d\u0430\u043c \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043c\u0441.<\/p>\n<p>\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043d\u0430\u043c \u043a\u043e\u0434\u0430. \u041d\u043e \u0434\u0443\u043c\u0430\u044e \u043e\u043f\u044b\u0442\u043d\u044b\u0435 php \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434.<br \/>\n\u0418\u0442\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430\u0448\u0438\u0445 \u0441\u043c\u0441 \u0438 \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0433\u043e \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>CustomSMSProvider<\/code>. \u0418 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u043d\u0430\u043f\u0438\u0448\u0443 \u043d\u0438\u0436\u0435.<br \/>\n\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430:<br \/>\n<code><br \/>\nclass CustomSMSProvider {<br \/>\npublic $provider = '';<br \/>\npublic function getOptions($settings) {}<br \/>\npublic function send($to, $message, $sendTime = null) {}<br \/>\npublic function send_book($from,$to,$text,$id,$sendTime = 0) {}<br \/>\npublic function send_otp($response, $to, $message) {}<br \/>\npublic function init() {}<br \/>\n}<br \/>\n<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0441\u0432-\u0432\u0430 \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p><code>public $provider<\/code> &#8212; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432-\u0432\u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u043a\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0441\u043c\u0441 (\u0432\u044b\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430). \u0421\u044e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: as_custom_sms<br \/>\n<code>public function getOptions($settings) {}<\/code> &#8212; \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043c\u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u042d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0421\u041c\u0421 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0430.<br \/>\n\u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043e\u043f\u0446\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0441\u0432\u043e\u0438\u0445 \u043e\u043f\u0446\u0438\u0439. \u0412\u043e \u043f\u0435\u0440\u0432\u044b\u0445 \u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 $settings. \u0412\u043e \u0432\u0442\u043e\u0440\u044b\u0445 \u0441\u043c\u0441 \u043e\u043f\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 $settings[&#8216;sms&#8217;][&#8216;options&#8217;] \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u043e\u043f\u0446\u0438\u0438 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0421\u041c\u0421.<br \/>\n\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u043c\u044b \u043e\u043f\u0438\u0448\u0435\u043c \u043a\u0430\u043a \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u0441\u0435\u0445 \u043e\u043f\u0446\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0441\u0435\u0439\u0447\u0430\u0441 \u0436\u0435 \u043e\u043f\u0438\u0448\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0441\u043c\u0441.<br \/>\n\u041a\u0430\u0436\u0434\u044b\u0439 \u043e\u043f\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<ul>\n<li>&#8216;title&#8217; &#8212; \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 (\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)<\/li>\n<li>&#8216;description&#8217; &#8212; \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e)<\/li>\n<li>&#8216;order&#8217; &#8212; \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0446\u0438\u0438 (\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)<\/li>\n<li>&#8216;fields&#8217; &#8212; \u043c\u0430\u0441\u0441\u0438\u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0435\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438:\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>&#8216;name&#8217; &#8212; \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432 get_option \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)<\/li>\n<li>&#8216;value&#8217; &#8212; \u043c\u0438\u043a\u0441 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0435\u0440\u043d\u0435\u0442 get_option, (\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)<\/li>\n<li>&#8216;type&#8217; &#8212; \u0442\u0438\u043f\u044b \u043e\u043f\u0446\u0438\u0439. \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e switch \u0438 input (\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)<\/li>\n<li>&#8216;multiple&#8217; &#8212; bool &#8212; \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0432\u044b\u0431\u043e\u0440\u0430 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e),<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&#8216;values&#8217; &#8212; \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0438\u043f\u0430 \u043e\u043f\u0446\u0438\u0438 switch. \u043c\u0430\u0441\u0441\u0438\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 [&#8216;label&#8217; => &#187;, &#8216;value&#8217; => &#187;] (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e),<\/li>\n<li>&#8216;fields&#8217; &#8212; \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0438\u043f\u0430 \u043e\u043f\u0446\u0438\u0438 switch. \u043c\u0430\u0441\u0441\u0438\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u0438\u0434\u043d\u044b \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0435\u0441\u043b\u0438 switch \u0430\u043a\u0442\u0438\u0432\u0435\u043d<\/li>\n<\/ul>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0446\u0438\u0439, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Twilio:<\/h3>\n<p><code><br \/>\npublic function getOptions($settings) {<br \/>\n$opt = [<br \/>\n'title'  =>  'Twilio', \/\/ \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u043c\u0441<br \/>\n'description'  =>  '',<br \/>\n'order'  =>  40,<br \/>\n\/\/ \u0432 fields \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u043e\u043f\u0446\u0438\u0438 \u0442\u0438\u043f\u0430 switch<br \/>\n'fields'  =>  [<br \/>\n[<br \/>\n'name'  =>  'oz_smsType', \/\/ \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435\u0433\u0434\u0430 oz_smsType<br \/>\n'value'  =>  get_option('oz_smsType') == $this->provider, \/\/ \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435<br \/>\n'type'  =>  'switch', \/\/ \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435\u0433\u0434\u0430 switch<br \/>\n'multiple'  =>  false, \/\/ \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435\u0433\u0434\u0430 false<br \/>\n\/\/ \u0432 values \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u0430\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<br \/>\n'values'  =>  [<br \/>\n[<br \/>\n'label'  =>  '',<br \/>\n'value'  =>  $this->provider<br \/>\n]<br \/>\n],<br \/>\n\/\/ \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043e\u043f\u0446\u0438\u0438. \u041e\u0434\u043d\u0430 \u043e\u043f\u0446\u0438\u044f, \u043e\u0434\u0438\u043d \u043c\u0430\u0441\u0441\u0438\u0432. \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0422\u0432\u0438\u043b\u0438\u043e, \u043d\u0443\u0436\u043d\u043e \u0442\u0440\u0438 \u043e\u043f\u0446\u0438\u0438: SID, Token, Account Phone Number or Alphanumeric Sender ID<br \/>\n'fields'  =>  [<br \/>\n[<br \/>\n'title'  =>  'SID',<br \/>\n'description'  =>  '',<br \/>\n'order'  =>  10,<br \/>\n'fields'  =>  [<br \/>\n[<br \/>\n'name'  =>  'oz_twilio_sid', \/\/ \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438. \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c oz_twilio_sid<br \/>\n'value'  =>  get_option('oz_twilio_sid', ''),<br \/>\n'type'  =>  'input',<br \/>\n'multiple'  =>  false,<br \/>\n'values'  =>  [],<br \/>\n],<br \/>\n]<br \/>\n],<br \/>\n[<br \/>\n'title'  =>  'Token',<br \/>\n'description'  =>  '',<br \/>\n'order'  =>  10,<br \/>\n'fields'  =>  [<br \/>\n[<br \/>\n'name'  =>  'oz_twilio_token',<br \/>\n'value'  =>  get_option('oz_twilio_token', ''),<br \/>\n'type'  =>  'input',<br \/>\n'multiple'  =>  false,<br \/>\n'values'  =>  [],<br \/>\n],<br \/>\n]<br \/>\n],<br \/>\n[<br \/>\n'title'  =>  'Account Phone Number or Alphanumeric Sender ID',<br \/>\n'description'  =>  '',<br \/>\n'order'  =>  10,<br \/>\n'fields'  =>  [<br \/>\n[<br \/>\n'name'  =>  'oz_twilio_sender',<br \/>\n'value'  =>  get_option('oz_twilio_sender', ''),<br \/>\n'type'  =>  'input',<br \/>\n'multiple'  =>  false,<br \/>\n'values'  =>  [],<br \/>\n],<br \/>\n]<br \/>\n],<br \/>\n]<br \/>\n]<br \/>\n]<br \/>\n];<br \/>\n$settings['sms']['options'][] = $opt;<br \/>\nreturn $settings;<br \/>\n}<br \/>\n<\/code><\/p>\n<h3>\u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043c\u0441:<\/h3>\n<p><code>public function send($to, $message, $sendTime = null) {}<\/code><br \/>\n\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u0430:<br \/>\n<strong>$to<\/strong> &#8212; \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f<br \/>\n<strong>$message<\/strong> &#8212; \u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f<br \/>\n<strong>$sendTime<\/strong> &#8212; \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e)<\/p>\n<p>\u041b\u043e\u0433\u0438\u043a\u0443 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f API \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u043c\u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0421\u041c\u0421 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043a\u043b\u044e\u0447\u0430\u043c\u0438: error &#8212; true, text &#8212; \u0442\u0435\u043a\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0438<\/p>\n<h3>\u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u0434\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Twilio:<\/h3>\n<p><code><br \/>\npublic function send($to, $message, $sendTime = null) {<br \/>\n$sid = get_option('oz_twilio_sid');<br \/>\n$token = get_option('oz_twilio_token');<br \/>\n$auth = base64_encode($sid . \":\" . $token);<br \/>\n$from = get_option('oz_twilio_sender');<br \/>\n$data = array(<br \/>\n\"From\"  =>  $from,<br \/>\n\"To\"  =>  $to,<br \/>\n\"Body\"  =>  do_shortcode($message),<br \/>\n);<br \/>\n$url = \"https:\/\/api.twilio.com\/2010-04-01\/Accounts\/\".$sid.\"\/Messages.json\";<br \/>\n$sms = wp_remote_post( $url, array(<br \/>\n'headers'  =>  [ 'Authorization'  =>  \"Basic $auth\" ],<br \/>\n'body'         =>  $data,<br \/>\n) );<br \/>\nif (is_wp_error($sms)) {<br \/>\n$sms = [<br \/>\n'error'  =>  true,<br \/>\n'text'  =>  $sms-> get_error_message(),<br \/>\n];<br \/>\n}<br \/>\nelse {<br \/>\n$sms = json_decode(wp_remote_retrieve_body($sms), true);<br \/>\nif ($sms['status'] &amp;&amp; $sms['status'] == 'queued') {<br \/>\nreturn $sms;<br \/>\n}<br \/>\nelse {<br \/>\n$sms = [<br \/>\n'error'  =>  true,<br \/>\n'text'  =>  $sms['message'],<br \/>\n'response'  =>  $sms<br \/>\n];<br \/>\n}<br \/>\n}<br \/>\nreturn $sms;<br \/>\n}<br \/>\n<\/code><\/p>\n<h3>\u041c\u0435\u0442\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043c\u0441 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438<\/h3>\n<p><code>public function send_book($from,$to,$text,$id,$sendTime = 0) {}<\/code><br \/>\n\u0412 \u043d\u0435\u0433\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434 send. \u0418 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<br \/>\n\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u0430:<br \/>\n<strong>$from<\/strong> &#8212; \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e,<br \/>\n<strong>$to<\/strong> &#8212; \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f,<br \/>\n<strong>$text<\/strong> &#8212; \u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f,<br \/>\n<strong>$id<\/strong> &#8212; id \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f,<br \/>\n<strong>$sendTime<\/strong> &#8212; \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c<\/p>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430:<\/h3>\n<p><code><br \/>\npublic function send_book($from,$to,$text,$id,$sendTime = 0) {<br \/>\n$this-> send($to, $text);<br \/>\n}<br \/>\n<\/code><\/p>\n<h3>\u041c\u0435\u0442\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043c\u0441 \u043a\u043e\u0434\u0430, \u043f\u0435\u0440\u0435\u0434 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0434\u043b\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430<\/h3>\n<p><code>public function send_otp($response, $to, $message) {} <\/code><br \/>\n\u0414\u043e\u043b\u0436\u0435\u043d \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043a\u043b\u044e\u0447\u0435\u043c success \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u0435\u0442\u043e\u0434\u0430 send.<\/p>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430:<\/h3>\n<p><code><br \/>\npublic function send_otp($response, $to, $message) {<br \/>\n$response = $this-> send($to, $message);<br \/>\nif (isset($response['error']) &amp;&amp; $response['error']) {<br \/>\nreturn $response;<br \/>\n}<br \/>\nelse {<br \/>\nreturn [<br \/>\n'success'  =>  true,<br \/>\n];<br \/>\n}<br \/>\n}<br \/>\n<\/code><\/p>\n<h3>\u041c\u0435\u0442\u043e\u0434 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0445\u0443\u043a\u0438 \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432<\/h3>\n<p><code>public function init() {}<\/code><br \/>\n\u0422\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u043a \u0445\u0443\u043a\u0430\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043c\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u0432\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438. \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435:<\/p>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430:<\/h3>\n<p><code><br \/>\npublic function init() {<br \/>\nadd_filter('book_oz_plugin_settings', [$this, 'getOptions']);<br \/>\nadd_filter('book_oz_otp_send_'.$this-> provider, [$this,'send_otp'], 10, 3);<br \/>\nadd_action('book_sendingSMS_'.$this-> provider, [$this,'send_book'],10,5);<br \/>\nadd_action('book_sendingSMSRemind_emp_'.$this-> provider, [$this, 'send'], 10,3);<br \/>\n}<br \/>\n<\/code><\/p>\n<p>\u0421\u0430\u043c \u043a\u043b\u0430\u0441\u0441 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 <code>functions.php<\/code> \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b.<br \/>\n\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>init<\/code><br \/>\n\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f functions.php (\u043a\u043b\u0430\u0441\u0441 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435 \u0433\u0434\u0435 functions.php):<br \/>\n<code><br \/>\nrequire_once(dirname(__FILE__).'\/CustomSMSProvider.php');<br \/>\n$customsms = new CustomSMSProvider();<br \/>\n$customsms-> init();<br \/>\n<\/code><\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0435. \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 SMS \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0438 \u043f\u0440\u0438 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u043c\u0441 \u0442\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<br \/>\n\u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0442\u0443\u0442 <a rel=\"nofollow\" href=\"https:\/\/github.com\/ozplugin\/examples\/blob\/main\/CustomSMSProvider.php\">GitHub<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>\u041d\u0430\u0448\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0447\u0430\u0441\u0442\u043e \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043c\u0441 \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0422\u0432\u0438\u043b\u0438\u043e \u0438 \u0421\u041c\u0421\u0426. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u043d\u0430\u043c \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043c\u0441. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043d\u0430\u043c \u043a\u043e\u0434\u0430. \u041d\u043e \u0434\u0443\u043c\u0430\u044e \u043e\u043f\u044b\u0442\u043d\u044b\u0435 php \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u0418\u0442\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":22690,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/posts\/22277"}],"collection":[{"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/comments?post=22277"}],"version-history":[{"count":12,"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/posts\/22277\/revisions"}],"predecessor-version":[{"id":22689,"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/posts\/22277\/revisions\/22689"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/media\/22690"}],"wp:attachment":[{"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/media?parent=22277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/categories?post=22277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oz-plugin.com\/ru\/wp-json\/wp\/v2\/tags?post=22277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}