glific / glific Goto Github PK
View Code? Open in Web Editor NEWThe Main application that provides the core interface via the glific APIs
Home Page: https://glific.org
License: GNU Affero General Public License v3.0
The Main application that provides the core interface via the glific APIs
Home Page: https://glific.org
License: GNU Affero General Public License v3.0
Organizations should be able to send messages to multiple contacts.
Is your feature request related to a problem? Please describe.
We will tag every incoming message as unread.
The frontend team will make a query to remove this tag from the message.
Is your feature request related to a problem? Please describe.
I would love to be able to get a quick totalCount
for a query to tags, or to the entire tag table itself, so that I can present to the user that we have X amount of tags without actually loading all the tags on the client-side (maybe there's 1000 objects, wouldn't want to load all 1000 objects into the table when I can just load the number 1000 and then load 10 at a time).
Describe the solution you'd like
If there could be a count
parameter or a way to get the totalCount
from a potential GraphQL query without having to necessarily run the entire query, that would be great!
Is your feature request related to a problem? Please describe.
Conversations are the bedrock of the application. The frontend displays conversations, and needs to be able to retrieve them quickly
Describe the solution you'd like
Create an API that we can expose via GraphQL
Enums form the basis of many constants in Glific, used across Postgres, Elixir/Ecto and Absinthe. Unfortunately, all three use slightly different variations of the same values. The advantage of this is it gives us strong type checking in GraphQL APIs
We adopted the enum standard from Elixir - Ecto / Absinthe Enums Recipe
Is your feature request related to a problem? Please describe.
We need to expose: Build passing. code coverage, doc coverage and other badges to our github repository
This gives the project a lot of credibility and looks good :)
Is your feature request related to a problem? Please describe.
Allow user to search on all tags in glific
Once the above is done, add filter for language and parent tag
This avoids us writing conditional code in a bunch of places to see whether it was a sent or received message and makes some queries a lot simpler and easier to read
At some point, we might also want to add a counter to each message specific to a contact to optimize the queries even more
Is your feature request related to a problem? Please describe.
(revising this from my first idea)
Extends tags functionality to associate keywords that can be linked to a tag. All incoming texts, are automatically parsed and if there is a keyword match, we associate the tag with the message
Thus Hello/hi/hola/namaste/good morning could all be keywords for the tag "greeting"
numeric tags are automatically parsed by the system and have a value
We can drive automation both on the tag, and the value of the tag
I've started work on this in the genstage branch, and will merge into master by end of day
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
Currently, we are fetching all the parent message-ids by a query.
We need to change this based on the Ancestors fields.
Right now, all sent messages are first listed and then all received. This does not make it great for a real world scenario. we need to interleave them
also make sure the times are increasing and not the same time for everything. we need valid values to test things @ scale
also add the contact_id field for messages (I'm committing a fix for this soon)
Is your feature request related to a problem? Please describe.
For messages tagged optout
We can follow a similar pattern as New User Pattern and Welcome Message
When we start processing opt-outs from provider, we might not be able to send them back a message. we'll handle this case at that time
Is your feature request related to a problem? Please describe.
We will expose all our code documentation to the Public, so we can link it
Describe the solution you'd like
Expose docs via github pages
Describe the bug
We need to have a look for the outdated version for all the deps and update them.
Please run a mix check after updating any dependency so that we can catch compatibility issues and fix them.
We also need to think of all the places where we'll need to inform clients of state changes.
this is primarily in the message send/receive flow and any automated actions we take after receiving a message
Describe the bug
We need to set a user id to the massage table so that we know when sent the message to the beneficiary on the behalf of an organization.
Since there are some automated messages which will don't have any user id so we will make this field nullable.
This change will also help us to audit the messages and all.
Currently, we are adding writing type specs for every schema.
This is a bit problematic for some of the reasons, like code duplications and all.
https://github.com/bamorim/typed_ecto_schema looks a good solution but they did not provide some of the Ecto schema relationship functionality yet.
We created an issue on that pacakge bamorim/typed_ecto_schema#5.
BSP will be all the services providers for our message communication. We will start with Gupshup and then add more BSP.
Give an option to users to search across messages based on message text and tags.
Add filter for tags
Is your feature request related to a problem? Please describe.
Migrate session_messages from two_way to glific. This include: DB structure, ecto schema, graphql and tests
Describe the solution you'd like
Call the table: session_templates. The top level context should be templates (since we will add hsm_templates in v0.3)
add message_media_id to the table also
delete the is_translated field
Add a shortcode field called shortcode
Add a couple of sample messages in seeds and seeds_scale. Two examples could be a sample
template for New User and a goodbye message
Is your feature request related to a problem? Please describe.
We need to validate the contact provider status before sending the message.
If the status is invalid then we the function will raise an Error that (Contact is not valid or opt-out)
Right now for CRUD and Search operations on one object, we create multiple GraphQL files to exercise each operation. Might be easier to name each operation and have one file. Might make better reading and conciseness.
Created an issue in wormwood github also:
Describe the bug
There are some weird issues (Maybe Because of Ecto config) in the partner tests.
We will do it once we finalize the organization structure.
Is your feature request related to a problem? Please describe.
Enums is polluting the top level namespace with one directory and two files.
Let's move it into its own directory called enums and all files under it. While we are at it, lets rename stuff to be consistent and call it Glific.Enums*
Let's keep all the tables in one migration file, makes for easier readability
Given a search term we need to:
Find all the messages: body (and hence contacts) matching this term
Find all contacts whose name or phone matches this term
Find all contact and messages that have a tag: label, description attached to them that matches this term
We have not added the meta field to the t() definition in our schemas. We need to add it to all the schema
Delete should respect FK constrains, Check language for an example which has an FK constraint from tags
%Language{}
%Glific.Settings.Language{
_meta_: #Ecto.Schema.Metadata<:built, "languages">,
description: nil,
id: nil,
inserted_at: nil,
is_active: false,
label: nil,
locale: nil,
tags: #Ecto.Association.NotLoaded<association :tags is not loaded>,
updated_at: nil
}
Describe the bug
In mac system server collation is not working with postgres and hence giving incorrect alphabetical order of strings (for case sensitive data)
Describe the bug
A clear and concise description of what the bug is.
Is your feature request related to a problem? Please describe.
I would love to see both OFFSET
and LIMIT
functionality for different GraphQL requests we make in the front-end.
Describe the solution you'd like
If these parameters could be added to the different objects, that would be great!
Describe the bug
query conversations($nc: Int!, $sc: Int!, $filter: ConversationFilter) {
conversations(numberOfConversations: $nc, sizeOfConversations: $sc, filter: $filter) {
contact {
id
name
}
messages {
id
body
}
}
}
with variables
{
"nc": 1,
"sc": 1,
"filter": { "id" : 359 }
}
returns
{
"data": {
"conversations": []
}
}
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Is your feature request related to a problem? Please describe.
Add :type to session_templates similar to messages
Add a send_session_message(contact_id(s), session message id) - we need this for automation in API and graphQL
Let's add a mock provider so that we don't need to make some API calls in our testing and demos.
We need to make some changes in the code
Add parent_id to messages
Cache ancestors (up to a limit) for efficient conversation retrieval
We are ignoring it right now, so we'll disable it for now. Filing an issue so we enable it before the end of the month and fix the errors
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.