Hello,
Are you getting any error message in the log files? Are you able to execute the query e.g. by command line?
Cheers,
Henning Westerholt
--
Henning Westerholt –
https://skalatan.de/blog/
Kamailio services –
https://gilawa.com
From: Edo <edo.ekunwe@gmail.com>
Sent: Samstag, 18. März 2023 20:21
To: Kamailio (SER) - Users Mailing List <sr-users@lists.kamailio.org>
Subject: [SR-Users] MongoDB query from Kamailio help needed
Help is needed. I know I have seen a similar problem either via email or google search but for the life of me I cannot find it now.
I am using:
Ubuntu:
5.4.0-144-generic #161-Ubuntu SMP Fri Feb 3 14:49:04 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Kamailio:
version: kamailio 5.3.9 (x86_64/linux) -- This is a dev platform and I can update kamailio if needed.
I am trying to query a mongodb collection for the phone number stored under “did” as an integer and make a decision based on the returned result (boolean
is sufficient for this decision).
I don’t know what I am doing wrong here. Any help will be well appreciated
##### This is the insert statement into the telephone db from a linux script
db.c$coll.insertOne({"did":parseInt($(cut
-d_ -f 1 <<< $1)), "callDesc":$(cut -d_ -f 1 <<< $1)}))" >> $(cut -d_ -f 1 <<< $1).js
did is stored as an integer and the callDesc is stored as presented by $rU
{ "_id" : ObjectId("641580b4863678d0ba38d69a"), "did" : 1XXXXXXXXXX, "callDesc" : 1XXXXXXXXXXXX }
> db.c234.find()
{ "_id" : ObjectId("641580b4863678d0ba38d69a"), "did" : 2XXXXXXXXXXXX, "callDesc" : 2XXXXXXXXXXXX }
> db.c234.find()
{ "_id" : ObjectId("641580b4863678d0ba38d69a"), "did" : 3XXXXXXXXXXXX, "callDesc" : 3XXXXXXXXXXXX }
>
Kamailio config:
.....
.....
# --- mongodb module loaded 202201082322
loadmodule "ndb_mongodb.so"
if (uri==myself)
{
sl_send_reply("100", "Trying to check if uri is myself $rU $ru");
#return;
#Adding this to test connection to mongodb…. This worked and the reply was sent to the endpoint
if(mongodb_cmd_simple("mongodbsrv1", "telephone", "cXXX”, "{ \"collStats\": \"cXXX\” }", "mgr1"))
{
sl_send_reply("183", "I got inside this message loop $rU found in mongodb");
xlog("response from mongodb is [[$mongodb(mgr1=>value)]]\n");
}
# End of the test
#This is to run the actual db query to test if the phone number is in the mongodb…. I am not successful at this query even when the number is known to be in the database
if(mongodb_find_one("mongodbsrv1", "telephone", "cXXX”,
"{\"did\" : \"$rU\" }", "mongoResponse1"))
{
# Route to confirmed route here -- 202302212032
sl_send_reply("183", "I got inside this mongodb message loop");
route(CONFIRMED_ROUTE);
xlog("response from mongodb is [[$mongodb(mongoResponse1=>value)]]\n");
}
else
{
route(UNCONFIRMED_ROUTE);
}
}
#append_hf("P-hint: outbound\r\n");
route(RELAY);
#exit;
}
Please help.
--
-----
Ekunwe
Tel: 601.497.3932