为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕雪6442864 2023-06-24 18:00:54
我试图制作一个 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 内部消息中创建的聊天中发送回复消息时,会发生错误(消息被红色包围)并且永远不会到达。我真的希望它能够像正常对话一样做出回应。我不知道我是否走错了。
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我终于找到了!!!


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


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);


查看完整回答
反对 回复 2023-06-24
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

这可能是因为 userto 和 userfrom 需要是对象,例如:


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


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

$message->userto = $userto;

查看完整回答
反对 回复 2023-06-24
  • 2 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信