Using node-red with Wazo

Is there a step-by-step with entries for each node shown for how to get node-red to monitor a trunk (as an example)?

I have read the posts on introduce node-red (parts 1 and 2) and how to use progammable application.

I have created sample node-red applications that do NOT use wazo nodes so I am OK in general with node-red and node-red graphs.

I have created a working node-red application to capture current_call_count for a line, but when I do that, the line no longer works for normal calls.

I am stuck on somethign very basic I am sure, but it is evading me.

Any detailed (English) tutorials -available for streaming or scheduled soon - for node-red with Wazo?

Hello, can you show me your flow? I don’t understand what you did with node-red.I made a test and i haven’t any issue.
My flow:

Why not, my english is not really good but i could make a small workshop in video conference to explain some basic with the plugin.

1 Like

@quintana

Français via Google translate donc veuillez excuser tout problème de langue

Merci pour les réponses rapides (je regroupe les réponses ici)

J’enseigne à temps partiel et j’ai un autre cours à 14h00-16h00 aujourd’hui, mais j’assisterai certainement à toute vidéoconférence que vous proposez. Les mercredis et jeudis sont généralement les meilleurs jours pour moi, mais je vais certainement essayer d’intégrer ce qui vous convient dans mon emploi du temps. Je ferais aussi le week-end, mais je ne sais pas ce que vous pensez de l’activité du week-end, donc je respecterai tout ce que vous voudrez.

Quant aux flux :

Certaines choses dont je ne suis pas sûr peuvent affecter mes résultats :

  • L’utilisateur que j’ai configurĂ© pour node-red Ă©tait associĂ© au locataire principal TenantUUID
    Je ne pouvais pas utiliser ’ --purpose “external-api” ’ avec myTenant
    et quand j’ai créé un utilisateur avec ’ --purpose “user” ’ pour myTenant
    cela n’a pas fonctionné pour capturer les données de trafic
  • La politique que j’ai associĂ©e Ă  mon utilisateur Ă©tait la politique d’administration par dĂ©faut (accès complet)
  • J’ai node-red en cours d’exĂ©cution sur un serveur distant se connectant au serveur Wazo
    mais cela ne SEMBLE pas être le problème, car j’ai une connexion websocket qui fonctionne
    (voir ci-dessous)

Je pense que j’utilise correctement les API. Ils fonctionnent et j’ai créé le document joint pour ce que j’ai fait pour que les API fonctionnent. Je vais créer plus de documentation pour node-red et la partager avec vous pour la publier sur la documentation Wazo si vous le souhaitez.

node-red fonctionne puisque j’ai pu faire fonctionner node-red et tracer des graphiques lorsque j’ai utilisé un injecteur d’horodatage toutes les 3 secondes et à partir de cela, j’ai généré un nombre aléatoire à partir duquel j’ai créé différents types de graphiques (graphique linéaire, compteur de vitesse, curseur, texte) .

La connexion de node-red au serveur Wazo fonctionne puisque j’ai pu utiliser la connexion Websocket pour capturer le current_call_count. Je dois travailler sur la manipulation des données pour capturer et stocker le nombre d’appels cumulés, mais à ce stade, il reconnaît l’activité Wazo et crée un graphique. Pour ce faire, je n’ai PAS créé d’application et n’ai rien créé du côté Wazo. Si j’ai créé une application et que je l’ai liée à une ligne, la ligne a cessé de fonctionner comme une ligne normale. Il me manque donc évidemment quelque chose dans la configuration qui permet aux informations de passer correctement si je la relie à une ligne/un utilisateur.

Le flux que j’ai utilisé pour cela est (je sais qu’il a besoin d’être affiné, juste pour tester le concept):
node-red-wazo-flows

  • websocket → fonction → dĂ©bogage et jauge
    configuration du Websocket avec l’utilisateur sur le locataire principal avec des droits de politique d’administrateur
    rien d’édité sur le serveur Wazo autre que de créer l’utilisateur avec l’attribution de MasterTenant et de politique

    configuration de la fonction pour passer current_call_count avec “On Message” déclaré comme


var totalCallCount = context.get( "totalCallCount" );
if ( typeof( totalCallCount ) == "undefined" ) {
    totalCallCount = 0;
}
// Current solution (below) is corrupted 
//   when a line is connected after the flow is running
//   since a line connection 
//   sends (as a separate msg.payload) current_call_count = 0
// See below for temporary measure to deal with this
if ( msg.payload.hasOwnProperty( "current_call_count" ) ) {
    if ( msg.payload.current_call_count == 1 ) {
        totalCallCount += 1;
    } else if ( msg.payload.registered == false ) {
        // This handles the line being disconnected
        // and prevents use of the current_call_count = 0
        // sent as part of the disconnect process
        totalCallCount = totalCallCount;
    } else if ( msg.payload.current_call_count == 0 ) {
        totalCallCount -= 1;
    }
    // Since I have not yet figured out how to handle new line connections
    //   I check if the totalCallCount has become corrupted (gone below 0)
    //   and reset it to 0
    // Hopefully soon I figure out how to really deal with this situation
    if ( totalCallCount < 0 ) {
        totalCallCount = 0;
    }
    context.set( "totalCallCount" , totalCallCount )
    msg.payload = totalCallCount;
    return msg;
}

configuration de débogage et de jauge à partir de la sortie de la fonction

Cependant, lorsque j’ai essayé de configurer la surveillance du tronc, en utilisant soit l’utilisateur associé au locataire principal, soit l’utilisateur associé à myTenant, lorsque je suis allé dans la configuration et que j’ai cliqué sur “Choisir le tronc”, aucune option n’était affichée et le champ où j’étais censé pour entrer dans le TrunkUUID était grisé, m’empêchant de saisir quoi que ce soit manuellement.

Je suis donc bloqué sur le truc de la surveillance du tronc.

Des pensées?

Y a-t-il un moment où vous planifiez une vidéoconférence ? J’aimerais en faire partie. Et ton anglais est bien meilleur que mon français alors ne t’inquiète pas :slight_smile:

Merci encore; c’est du chouette truc ! Je veux créer un tableau de bord rouge nœud auquel j’ai accès depuis mon téléphone portable afin de pouvoir voir ce qui se passe avec le serveur même lorsque je ne suis pas à mon bureau. (En plus je m’amuse à jouer… :slight_smile: )

===========================================================

@quintana

French via Google translate so please excuse any language issues

Thank you for the quick replies (I am consolidating the answers here)

I teach part-time and have another class at 2:00pm-4:00pm today but will definitely attend any video conference you offer that I can. Wednesdays and Thursdays are generally best days for me but I will definitely try to fit what works for you into my schedule. I would do weekends as well but not sure what your thoughts are on weekend activity so I’ll respect whatever you want.

As for the flows:

Some things that I am not sure about that may be affecting my results:

  • The user I setup for node-red was associated with the Master Tenant TenantUUID
    I could not use ’ --purpose “external-api” ’ with myTenant
    and when I created a user with ’ --purpose “user” ’ for myTenant
    it did not work to capture the traffic data
  • The policy I associated with my user was the default admin policy (full access)
  • I have node-red running on a remote server connecting to the Wazo server
    but that does not SEEM to be the problem, since I have a websocket connection working
    (see below)

I think I am using the APIs correctly. They are working and I created a document for what I did to get the APIs working. I will create more documentation for node-red and share with you for posting on Wazo documentation if you want. I cannot upload a PDF with this post but if you want tos ee the documentation so far, let me know how to get it to you.

node-red is working since I was able to get node-red working and graphing when I used a timestamp injector every 3 seconds and from that generated a random number from which I created different graphing types (Line Chart, Speedometer, Slider, Text).

node-red’s connection to the Wazo server is working since I was able to use the Websocket connection to capture the current_call_count. I need to work on the data manipulation to capture and store cumulative call counts, but at this point, it is recognizing Wazo activity and creating a graph. To do this, I did NOT create an application and did NOT create anything on the Wazo side. If I did create an application and link it to a line, the line stopped working as a normal line, so I am obviously missing something in the setup that allows information to pass along properly if I link it to a line/user.

The Flow I used for this is (I know it needs refinement, just to test the concept):

  • websocket → function → debug & guage
    node-red-wazo-flows

    websocket setup with user on Master Tenant with admin policy rights
    nothing edited to Wazo server other than to create the user with MasterTenant and Policy assignment
    function setup to pass current_call_count with “On Message” declared as

var totalCallCount = context.get( "totalCallCount" );
if ( typeof( totalCallCount ) == "undefined" ) {
    totalCallCount = 0;
}
// Current solution (below) is corrupted 
//   when a line is connected after the flow is running
//   since a line connection 
//   sends (as a separate msg.payload) current_call_count = 0
// See below for temporary measure to deal with this
if ( msg.payload.hasOwnProperty( "current_call_count" ) ) {
    if ( msg.payload.current_call_count == 1 ) {
        totalCallCount += 1;
    } else if ( msg.payload.registered == false ) {
        // This handles the line being disconnected
        // and prevents use of the current_call_count = 0
        // sent as part of the disconnect process
        totalCallCount = totalCallCount;
    } else if ( msg.payload.current_call_count == 0 ) {
        totalCallCount -= 1;
    }
    // Since I have not yet figured out how to handle new line connections
    //   I check if the totalCallCount has become corrupted (gone below 0)
    //   and reset it to 0
    // Hopefully soon I figure out how to really deal with this situation
    if ( totalCallCount < 0 ) {
        totalCallCount = 0;
    }
    context.set( "totalCallCount" , totalCallCount )
    msg.payload = totalCallCount;
    return msg;
}

debug and guage setup from output of function

However when I tried to setup trunk monitoring, using either the user associated with he Master Tenant or the user associated with myTenant, when I went to the setup and clicked “Choose Trunk”, there were no options shown and the field where I was supposed to enter the TrunkUUID was greyed out, preventing me from entering anything manually.

So I am stuck on the Trunk monitoring thing.

Any thoughts?

Is there a time you are planning a video conference? I’d love to be part of it. And your English is a lot better than my French so don’t worry :slight_smile:

Thanks again; this is neat stuff! I wnat to create a node-red dashboard I can access from my mobile phone so I can see what is going on with the server even when I am not at my desk. (Plus I am having fun playing … :slight_smile: )

Count me in!

Best days for me would be Wednesday or Thursday (or weekends) if anything in there works for you

Thank you.

@quintana

I’m also interested to attend this video conference.