不允许回复使用 moodle 发送的消息 api

Does not allow responding to a message sent with the moodle api

我正在尝试制作一个 php 脚本来向 moodle 中的其他人发送一条消息。

我已经看到消息 api 并且我做了这个

 $message = new \core\message\message();
$message->component = 'moodle';
$message->name = 'instantmessage';
$message->userfrom = 318;
$message->userto = 323;
$message->subject = 'message subject 1';
$message->fullmessage = 'message body';
$message->fullmessageformat = FORMAT_MARKDOWN;
$message->fullmessagehtml = '<p>message body</p>';
$message->smallmessage = 'small message';
$message->notification = '0';
$message->contexturl = 'http://GalaxyFarFarAway.com';
$message->contexturlname = 'Context name';
$message->replyto = "random@example.com";
$content = array('*' => array('header' => ' test ', 'footer' => ' test ')); // Extra content for specific processor
$message->set_additional_content('email', $content);
$message->courseid = 107; // This is required in recent versions, use it from 3.2 on https://tracker.moodle.org/browse/MDL-47162

$messageid = message_send($message)

问题是,当用户323在moodle内部消息中创建的聊天中发送回复消息时,发生错误(消息被红色包围)并且永远不会到达。

我真的希望它能够像正常对话一样做出回应。

不知道我说的对不对

谢谢

可能是因为userto和userfrom需要是对象eg:

$userto = $DB->get_record('user', array('id' => 323));

$message->userfrom = $USER; // Current user.
$message->userto = $userto;

https://docs.moodle.org/dev/Message_API#How_to_send_a_message

终于找到了!!!

问题是首先你必须在用户之间创建对话然后发送消息

if(!\core_message\api::get_conversation_between_users([$userfrom, $userto ])){
    $conversation = \core_message\api::create_conversation(
                    \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL,
                    [
                        $userfrom,
                        $userto 
                    ]
                );
}


$message = new \core\message\message();



$message->component = 'moodle';
    $message->name = 'instantmessage';
    $message->userfrom = $userfrom ;
    $message->userto = $userto;
    $message->subject = 'Nuevo mensaje';
    $message->fullmessage = $msg;
    $message->fullmessageformat = FORMAT_MARKDOWN;
    $message->fullmessagehtml = $msg;
    $message->smallmessage = $msg;
    $message->notification = '0';
    $message->contexturl = '';
    $message->contexturlname = 'Context name';
    $message->replyto = "###@######.###";
    $content = array('*' => array('header' => '', 'footer' => '')); 
    $message->set_additional_content('email', $content);
    $message->courseid = 107; 
    message_send($message);