Formas gratuitas de automatizar o envio de e-mails de convite do Discourse com WordPress (e outras plataformas)

Continuando a discussão de Automatizar o envio de e-mails de convite do Discourse com Zapier:

No caminho para alcançar meus objetivos, encontrei este tópico. Isso é ótimo, mas o Zapier não é gratuito, afinal :frowning:, então criei estes dois códigos, espero que sejam úteis para alguém. Coloque-os no arquivo functions.php do seu tema.

E se você tiver algum código útil semelhante a esse, me avise :smiley: Quero aprender mais sobre a API do Discourse e formas gratuitas de conectá-la ao WordPress apenas com código ^^!

Enviar convite para o Discourse após o envio de um comentário (status pendente)

function invite_forum_from_comment($comment_ID) {
 $comment = get_comment( $comment_ID );
 $comment_email = get_comment_author_email($comment);
 $maybe_notify = ( '0' == $comment->comment_approved );
 if ( $maybe_notify ) {
  // convidar usuário 
  wp_remote_post( 'https://forum.seudominio.com/invites', array(
      'method' => 'POST',
      'headers' => array('Content-Type' => 'multipart/form-data', 
                         'Api-key' => 'suachavedeapi',
                         'Api-Username' => 'seuusuario'),
                          'body' => array('email' => $comment_email,
  'custom_message' => 'Obrigado pelo comentário, enquanto aguarda a moderação, que tal entrar no nosso fórum?!')
            )
      );  
     };
    }
    add_action('comment_post', 'invite_forum_from_comment');

Convidar usuário para o Discourse após realizar um pedido no WooCommerce

  function invite_forum_from_order( $order_id ) {
          // obter todos os dados do pedido
          $order = new WC_Order($order_id);
          // obter o e-mail do usuário a partir do pedido
          $order_email = $order->billing_email;   
          // convidar usuário 
          wp_remote_post( 'https://forum.seudominio.com/invites', array(
              'method' => 'POST',
              'headers' => array('Content-Type' => 'multipart/form-data', 
                                 'Api-key' => 'suachavedeapi',
                                 'Api-Username' => 'seuusuario'),
              'body' => array('email' => $order_email,
  'custom_message' => 'Obrigado pelo seu pedido, por que perder tempo esperando? Entre agora no nosso fórum!')
                    )
              );  
          
        }
 // adicione esta função recém-criada à página de agradecimento
  add_action( 'woocommerce_thankyou', 'invite_forum_from_order', 10, 1 );

Atualização: Este código convidará apenas comentários aprovados para evitar o convite de alguns spammers.

function invite_forum_from_approved_comment($comment_ID) {
 $comment = get_comment( $comment_ID );
 $comment_email = get_comment_author_email($comment);
 $maybe_notify = ( '1' == $comment->comment_approved );
 if ( $maybe_notify ) {
  // convidar usuário 
  wp_remote_post( 'https://forum.fususu.com/invites', array(
      'method' => 'POST',
      'headers' => array('Content-Type' => 'multipart/form-data', 
                         'Api-key' => 'xxxxxxxxxxxxxxxxxxxx',
                         'Api-Username' => 'xxxx'),
      'body' => array('email' => $comment_email, 
                     'custom_message' => 'Obrigado. Seu comentário foi aprovado e você ganhou um convite para entrar no meu fórum.')
        )
  );  
 };
}
add_action('comment_unapproved_to_approved', 'invite_forum_from_approved_comment');

E, no caminho para convidar meus contatos de um sistema Mautic para o fórum,
percebi que o Mautic já possui uma função de webhook muito boa que pode enviar um POST para o Discourse :D, ^^! Basta criar uma ação dentro de uma campanha, e pronto! Sem necessidade de código :smiley:



Sinto pena do Zapier, eles são bons, mas prefiro uma solução gratuita e sem limitações :blush: