0

私は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' が問題だと思います。PHP で json オブジェクトに取得した応答を解析したいのですが、できません。

ここで私はそれを解析しようとしています

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

}
4

1 に答える 1

1

戻り部分は右に見えます。あなたが得ているエラーはから来ていますBigBlueButton->createMeeting()

使用した ID で既にミーティングを作成しています。新しい会議を作成するときに XML で渡す新しい会議 ID を生成していますか?

編集:

応答を 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();
}

SimpleXMLElementjson_encode できるものだけを返す必要があります。

于 2016-03-09T19:47:32.530 に答える