JSON — возвращение экземпляра класса в php … BigBluebutton

Я новичок в PHP и пытаюсь сторонний код, а именно Большая синяя кнопка API
https://github.com/bigbluebutton/bigbluebutton/tree/master/labs/bbb-api-php

Я пытаюсь позвонить BigBlueButton->createMeeting() функция, которая выглядит так:

public function createMeeting($createMeetingParams, $xml = '')
{
$xml = $this->processXmlResponse($this
->getCreateMeetingURL($createMeetingParams), $xml);
//$xml is fine
return new CreateMeetingResponse($xml);
}

Класс CreateMeetingResponse

  namespace BigBlueButton\Responses;

/**
* Class CreateMeetingResponse
* @package BigBlueButton\Responses
*/
class CreateMeetingResponse extends BaseResponse
{
/**
* @return string
*/
public function getMeetingId()
{
return $this->rawXml->meetingID->__toString();
}

/**
* @return string
*/
public function getAttendeePassword()
{
return $this->rawXml->attendeePW->__toString();
}

/**
* @return string
*/
public function getModeratorPassword()
{
return $this->rawXml->moderatorPW->__toString();
}

/**
* Creation timestamp.
*
* @return double
*/
public function getCreationTime()
{
return doubleval($this->rawXml->createTime);
}

/**
* @return int
*/
public function getVoiceBridge()
{
return intval($this->rawXml->voiceBridge);
}

/**
* @return string
*/
public function getDialNumber()
{
return $this->rawXml->dialNumber->__toString();
}

/**
* Creation date at the format "Sun Jan 17 18:20:07 EST 2016".
*
* @return string
*/
public function getCreationDate()
{
return $this->rawXml->createDate->__toString();
}

/**
* @return true
*/
public function hasUserJoined()
{
return $this->rawXml->hasUserJoined->__toString() == 'true';
}

/**
* @return int
*/
public function getDuration()
{
return intval($this->rawXml->duration);
}

/**
* @return bool
*/
public function hasBeenForciblyEnded()
{
return $this->rawXml->hasBeenForciblyEnded->__toString() == 'true';
}

/**
* @return string
*/
public function getMessageKey()
{
return $this->rawXml->messageKey->__toString();
}

/**
* @return string
*/
public function getMessage()
{
$this->rawXml->message->__toString();
}
}

Класс BaseResponse

namespace BigBlueButton\Parameters;

/**
* Class BaseParameters.
*/
abstract class BaseParameters
{
/**
* @param $array
*
* @return string
*/
protected function buildHTTPQuery($array)
{
return http_build_query(array_filter($array));
}

/**
* @return string
*/
abstract public function getHTTPQuery();
}

Теперь, когда я звоню BigBlueButton->createMeeting() функция, я ожидаю объект, который я могу закодировать в JSON, но то, что я получаю, это (я использовал print_r() Вот..):

BigBlueButton\Responses\CreateMeetingResponse Object
(
[rawXml:protected] => SimpleXMLElement Object
(
[returncode] => FAILED
[messageKey] => idNotUnique
[message] => A meeting already exists with that meeting ID.  Please use a different meeting ID.
)

)

Я не уверен, что происходит, но я думаю, что префикс пространства именBigBlueButton\Responses\CreateMeetingResponse Objectэто проблема. Я хочу разобрать ответ, который я получаю на объект JSON в PHP, но не могу

Вот где я пытаюсь разобрать это

function easymeet_create_meeting($id) {
// Create BBB object
$bbb = new BigBlueButton\BigBlueButton();

//creating meeting parameter
$meetingParas=new BigBlueButton\Parameters\CreateMeetingParameters('123456','sned');

//Creatign meeting
return json_encode($bbb->createMeeting($meetingParas));
///print_r($bbb->createMeeting($meetingParas)) give the xml response shown above

}

0

Решение

Обратная часть выглядит правильно. Ошибка, которую вы получаете, исходит от BigBlueButton->createMeeting()

Вы уже создали встречу с идентификатором, который использовали. Генерируете ли вы новый ID собрания, чтобы передать его с XML при создании нового собрания?

Редактировать:

Чтобы иметь возможность json_encode ответа, вам нужно использовать getRawXml() функция с $rawXml является защищенным свойством базового класса, а остальная часть класса является просто методами. Так:

public function createMeeting($createMeetingParams, $xml = '')
{
$xml = $this->processXmlResponse($this
->getCreateMeetingURL($createMeetingParams), $xml);
//$xml is fine
$resp = new CreateMeetingResponse($xml);
return $resp->getRawXml();
}

Должен вернуть только SimpleXMLElement который вы можете затем json_encode.

0

Другие решения

Других решений пока нет …