当我尝试按照tutorials/documentations获取(Connect PHP API)/searchContent(Knowledge Foundation API) 时,我遇到了一些奇怪的问题。
行为和输出
- 根据文档,我们初始化 API。函数 error_get_last()(在 fetch 之后调用)指出核心只读文件(我们不允许修改它)包含错误:
Array ( [type] => 8 [message] => 未定义索引:REDIRECT_URL [file] => /cgi-bin/${interface_name}.cfg/scripts/cp/core/framework/3.2.4/init.php [行] => 246)
- 初始化后,我们调用 fetch 函数来检索一个帐户。如果我们提供了错误的 ID,它会返回错误:
ID 无效:没有 ID = 32 的此类帐户
否则,提供正确的 ID 会返回一个 Account 对象,其中所有字段都填充为 NULL:
object(RightNow\Connect\v1_2\Account)#22 (25) {
["ID"]=>
NULL
["LookupName"]=>
NULL
["CreatedTime"]=>
NULL
["UpdatedTime"]=>
NULL
["AccountHierarchy"]=>
NULL
["Attributes"]=>
NULL
["Country"]=>
NULL
["CustomFields"]=>
NULL
["DisplayName"]=>
NULL
["DisplayOrder"]=>
NULL
["EmailNotification"]=>
NULL
["Emails"]=>
NULL
["Login"]=>
NULL
/* [...] */
["StaffGroup"]=>
NULL
}
尝试、解决方法和故障排除信息
- 配置:使用的账号
InitConnectAPI()
有权限 - 初始化:调用
InitConnectAPI()
不抛出任何异常(添加了一个try-catch块) - 调用 fetch 函数:如上所述,调用
RNCPHP\Account::fetch($act_id)
查找帐户(invalid_id => 错误)但无法填充字段 RNCPHP::fetch($correct_id)
调用时不抛出异常当我尝试按照 Knowledge Foundation API 的示例示例检索答案时,行为是相同的:
$token = \RNCK::StartInteraction(...) ; \RNCK::searchContent($token, 'lorem ipsum');
使用 PHP 的 SoapClient,我设法检索填充的对象。但是,它不是标准的一部分,自调用本地 WebService 不是一个好习惯。
重现问题的代码
error_reporting(E_ALL);
require_once(get_cfg_var('doc_root') . '/include/ConnectPHP/Connect_init.phph');
InitConnectAPI();
use RightNow\Connect\v1_2 as RNCPHP;
/* [...] */
try
{
$fetched_acct = RNCPHP\Account::fetch($correct_usr_id);
} catch ( \Exception $e)
{
echo ($e->getMessage());
}
// Dump part
echo ("<pre>");
var_dump($fetched_acct);
echo ("</pre>");
// The core's error on which I have no control
print_r(error_get_last());
问题:
- 你们有没有人面临同样的问题?有什么解决方法/修复可以帮助我解决它?
- 根据
RNCPHP\Account::fetch($correct_usr_id)
函数行为,我们可以推测问题来自“填充字段”步骤,这可能是核心的一部分(我没有权力)。我应该如何处理这个(获取是静态的,帐户似乎并不抽象)? - 我尝试使用该
debug_backtrace()
功能来了解可能出现的问题,但它不会输出相关信息。有什么办法可以获得更多的调试信息?
提前致谢,