Home Forums BP Better Messages buddypress/v1/messages REST API

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #19522
    dennis
    Participant

    Hi,

    Is there somebody that uses the buddypress messages API in combination with SimpleJWT plugin? I am having serious doubts that this API can be used in combination with Better Messages. Although it sometimes works (miracle?) it most of the times reports “There was an error trying to create the message.”. I am a 100% sure I am authenticated and logged in.

    Message, POST: buddypress/v1/messages
    id = 1, // ThreadId
    context = “edit”,
    message = “Hello”,

    Private Messaging


    Really like Better Messages (actually the best out there) but if I can’t insert ads and have a robot in the chat, I can not use it (monetization model down the drain). Somebody has experience with buddypress REST API / BM?

    #19523
    Support
    Keymaster

    Hi there!

    Better Messages 2.0+ does not use BuddyPress Rest API.

    You can send messages using this way:
    https://www.better-messages.com/docs/development/php-functions/new_message

    Thanks!

    #19524
    dennis
    Participant

    thanks for pointing it out, missed that disconnect from buddypress, like. However my bot is external and not within wordpress itself. Is there another an endpoint? url I can abuse?

    #19525
    dennis
    Participant

    PS: like you lost buddypress, we dont need, was just there for better messages. I am c# engineer, not php, will try to hack a simple wordpress endpoint

    #19535
    dennis
    Participant

    ok, hacked-up some wordpress rest endpoints (my first php yeah!)

    1. you need simpleJWT plugin to take care of auth.
    2. make sure you enable jwt on all endpoints and pass &jwt=<token>
    3. this is not production software! as said i am not a PHP engie (assembler, c, c++, c#, pascal but not php 🙂
    4. drop the code in functions.php in your themes folder, again not correct, this is not production software, hope bm comes with official api; below is tested and works

    #19536
    dennis
    Participant

    5. to add messages [POST] https://<yoursite>/?rest_route=/better-messages/v1/addmessagetothread&JWT=JWT

    
    // register add message endpoint
    add_action('rest_api_init', function () {
                register_rest_route( 'better-messages/v1', '/addmessagetothread',array(
                    'methods'  => 'POST',
                    'callback' => 'AddMessageToThread',
    		'permission_callback' => '__return_true'
                   ));
                 });
    
    // implementation
    function AddMessageToThread($request) {
    
    	$user = wp_get_current_user();
    
           // check if user is logged in >> return error
           if ( $user->exists() == false) {
             return new WP_Error( 'User is not logged in.', 'User is not logged in.', array('status' => 404) );
            }
    
    	$sender_id  = $user->ID;
    	
    
    	$message_id = Better_Messages()->functions->new_message([
       		  'sender_id'    => $sender_id,
       		  'thread_id'    => $request['thread_id'],
        		  'content'      => $request['content'],
        		  'return'       => 'message_id',
    		]);
    
          if ( is_wp_error( $message_id ) ) {
            $error = $message_id->get_error_message();
            return new WP_Error( 'Unable to post message to thread.' . $error, 'Unable to post message to thread.', array('status' => 404) );
    
    	} else {
            $response = new WP_REST_Response($message_id);
            $response->set_status(200);
            return $response;
    	}
    }
    #19537
    dennis
    Participant

    6.to create new threads and post messages [POST] https://<yoursite>/?rest_route=/better-messages/v1/createnewthread&JWT=JWT

    
    // register create thread endpoint
    add_action('rest_api_init', function () {
                register_rest_route( 'better-messages/v1', '/createnewthread',array(
                    'methods'  => 'POST',
                    'callback' => 'CreateNewThread',
    		'permission_callback' => '__return_true'
                   ));
                 });
    
    function CreateNewThread($request) {
    
    	$user = wp_get_current_user();
    
           // check if user is logged in >> return error
           if ( $user->exists() == false) {
             return new WP_Error( 'User is not logged in.', 'User is not logged in.', array('status' => 404) );
            }
    
    	$sender_id  = $user->ID;
    	
         $thread_id = Better_Messages()->functions->new_message([
            'sender_id'    => $sender_id,
            'content'      => $request['content'],
            'subject'      => $request['subject'],
            'recipients'   => $request['recipients'],
            'return'       => 'thread_id',
            'error_type'   => 'wp_error'
          ]);
    
            $response = new WP_REST_Response($thread_id);
            $response->set_status(200);
            return $response;
    }
    

    hope to save somebody else some time. don’t complain when i killed you site.

    #19559
    dennis
    Participant

    Hi,

    See that there is already API provisioning in the source, why isn’t there documentation? Is it for internal use?

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.