xmpphp XMPP,从 php 脚本发送消息
Posted
技术标签:
【中文标题】xmpphp XMPP,从 php 脚本发送消息【英文标题】:xmpphp XMPP, send message from php script 【发布时间】:2011-04-15 18:34:29 【问题描述】:嗨 我有一个 jabberserver,我希望能够从 php 脚本向用户推送消息。
F.x.如果我从浏览器调用 script.php,它会向用户发送一条消息。 我已经尝试过使用 xmp 框架的 jaxl 和 xmpphp,但我无法让它工作。不是我自己的服务器,也不是 facebooks 服务器。
我的 script.php 有以下内容:
error_reporting(E_ALL);
include("lib/xmpphp/XMPPHP.php");
$conn = new XMPP('chat.facebook.dk', 5222, 'username', 'password', '', 'chat.facebook.com', true, XMPPHP_Log::LEVEL_VERBOSE);
$conn->connect();
$conn->processUntil('session_start');
$conn->message('someusername@chat.facebook.com', 'This is a test message!');
$conn->disconnect();
但是什么也没发生,也没有错误。 我已经按照本指南设置了一个回声机器人,它适用于我的服务器和 facebook。脚本在这里:http://abhinavsingh.com/blog/2010/02/writing-your-first-facebook-chat-bot-in-php-using-jaxl-library/
我该怎么办?
【问题讨论】:
如果您的脚本在哪个服务器上运行?窗户/Unix?检查邮件是否正常工作。 我 100% 确定邮件是正确的。 我的意思是邮件守护进程(SMTP 服务器) 呃,邮件不存在?它的用户名。我不是想发送电子邮件,而是向 jabber 用户发送消息。 是 someusername@chat.facebook.com 在您的连接用户名册列表中。如果某个用户名不在您的名单中,他将永远不会收到您的消息,尽管 Jaxl 日志会显示消息已成功发送。 【参考方案1】:<?php
set_time_limit(0); // some time connection take while
require_once 'xmpp-lib/XMPPHP/XMPP.php';
$host = 'you Host name'; // ex.192.168.2.1
$port = '5222'; // its defauls xmpp port
$username = 'name@host' // ex vivek@host
$pass = 'userpass';
$conn = new XMPPHP_XMPP(host , $port, $username, $pass, 'xmpphp','yourhost', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO);
try
$conn->connect();
$conn->processUntil('session_start');
$conn->presence();
$conn->message('anotherusername@host', 'Hello!');
$conn->disconnect();
catch(XMPPHP_Exception $e)
die($e->getMessage());
?>
【讨论】:
【参考方案2】:<?php
$command = 'send_message';
$requestParams = array('type' => 'chat',
'to' => '919999999999@127.0.0.0',
'from' => '919999999991@127.0.0.0',
'body' => 'Hi vivek patel',
'subject' => 'test',
);
$request = xmlrpc_encode_request($command, $requestParams, (array('encoding' => 'utf-8')));
$context = stream_context_create(array('http' => array('method' => "POST",
'header' => "User-Agent: XMLRPC::Client mod_xmlrpc\r\n" .
"Content-Type: text/xml\r\n" .
"Content-Length: " . strlen($request),
'content' => $request
)
)
);
try
$file = file_get_contents("http://127.0.0.0:4560/RPC2", false, $context);
$response = xmlrpc_decode($file);
catch (Exception $e)
echo $e->getMessage();
exit;
if (xmlrpc_is_fault($response))
trigger_error("xmlrpc: $response[faultString] ($response[faultCode])");
echo '<pre>';
echo print_r($response);
echo '</pre>';
?>
【讨论】:
请您提供更多详细信息,说明这段代码在做什么以及原始问题中出了什么问题 @sancelot 这段代码用于从 jabber 服务器使用 PHP 脚本和 XMLRPC 将消息 jid 1 发送到 jid2。关于从 PHP 脚本 xmlrpc 发送消息的原始问题是最简单的方法。以上是关于xmpphp XMPP,从 php 脚本发送消息的主要内容,如果未能解决你的问题,请参考以下文章