Notification Mattermost avec un webhook entrant

Bonjour à tous et à toutes !
D’abord, je ne suis pas un très grand développeur, alors je m’excuse si la réponse à mon problème est évidente.

J’utilise Dolibarr et Mattermost pour travailler au sein de mon entreprise, et j’aimerais savoir comment je pourrais automatiser l’envoi de message dans Mattermost à partir d’événements Dolibarr.

Concrètement, lorsqu’un client signe une propale, j’aimerais recevoir un message indiquant quelle propale a été signée (ou refusée).

En cherchant, j’ai trouvé les informations sur les Trigers et Hooks.
Il semblerait que ce soit plutôt les triggers dans ce cas.
Concernant l’événement, ce serait PROPAL_CLOSE_SIGNED et PROPAL_CLOSE_REFUSED.

Mais quand vient le moment de développer ça, je suis perdu. Le wiki de Mattermost donne ces infos :

POST /hooks/xxx-generatedkey-xxx HTTP/1.1
Host: your-mattermost-server.com
Content-Type: application/json
Content-Length: 63

{
    "text": "Hello, this is some text\nThis is more text. 🎉"
}

Mais je ne sais pas quoi faire de ces informations…

Merci de votre aide !

Bonjour,

Vous pouvez vous inspirez de ce bout de code pour envoyer un message sur un hook mattermost

// Url du hook mattermost
$hook_url = 'https://mattemost.example.com/hooks/pybx9bssfjgatk1r11djuzi8jc';

// message
$message = 'Une propale a été signée';
$message .= "\n";

// payload 
$payload = sprintf( 'payload={"text": "%s"}', $message);

// curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $hook_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec ($ch);
curl_close($ch);

// Result
if ($result == 'ok') {
    echo 'message envoyé';
} else {
    echo 'une erreur est survenue';
}

Bonjour,
Merci pour le code, je l’ai mit dans le dossier core/triggers, dans un fichier interface_99_all_MattermostNotifications.class.php comme expliqué pour les triggers mais cela ne marche pas, il ne se passe rien…
Je l’ai ajouté dans la partie

switch ($action) {
case 'PROPAL_CREATE':
}

pour tester plus simplement si le code était bien déclenché (si je met une erreur, cela retourne bien une erreur 500)

Bonjour, avez vous déclaré que votre module a des triggers dans le fichier momodule.class.php ?

Si le champ dans ce fichier qui dit trigger est à 0 rien ne se passera

@+

Je pense…
Je vous donne le code que j’ai dans le fichier « interface_99_all_Mattermost.class.php »

class InterfaceMattermost extends DolibarrTriggers
{
	/**
	 * Constructor
	 *
	 * @param DoliDB $db Database handler
	 */
	public function __construct($db)
	{
		$this->db = $db;

		$this->name = preg_replace('/^Interface/i', '', get_class($this));
		$this->family = "Mattermost";
		$this->description = "Notifications d'actions sur Mattermost";
		// 'development', 'experimental', 'dolibarr' or version
		$this->version = 'development';
		$this->picto = 'action';
	}

	// /**
	//  * Trigger name
	//  *
	//  * @return string Name of trigger file
	//  */
	// public function getName()
	// {
	// 	return $this->name;
	// }

	// /**
	//  * Trigger description
	//  *
	//  * @return string Description of trigger file
	//  */
	// public function getDesc()
	// {
	// 	return $this->description;
	// }


	/**
	 * Function called when a Dolibarrr business event is done.
	 * All functions "runTrigger" are triggered if file
	 * is inside directory core/triggers
	 *
	 * @param string 		$action 	Event action code
	 * @param CommonObject 	$object 	Object
	 * @param User 			$user 		Object user
	 * @param Translate 	$langs 		Object langs
	 * @param Conf 			$conf 		Object conf
	 * @return int              		<0 if KO, 0 if no triggered ran, >0 if OK
	 */
	public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf)
	{
		if ($action === 'PROPAL_MODIFY') {
			// Url du hook mattermost
			$hook_url = 'https://XXXXXX';

			// message
			$message = 'Une propale a été modifiée';
			$message .= "\n";

			// payload 
			$payload = sprintf( 'payload={"text": "%s"}', $message);


			// curl
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, $hook_url);
			curl_setopt($ch, CURLOPT_POST, 1);
			curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
			$result = curl_exec ($ch);
			curl_close($ch);

			// Result
			if ($result == 'ok') {
				echo 'message envoyé';
			} else {
				echo 'une erreur est survenue';
			}
		}
		return 1;
	}
}

EDIT : C’est bon ! avec ce code, tout fonctionne ! Merci beaucoup !! j’utilisais mal l’événement « PROPAL_MODIFY »
Merci beaucoup !!