Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Features required to make tSIP suitable for support/sales teams #9

Open
nickpapoutsis opened this issue Feb 23, 2020 · 2 comments
Open

Comments

@nickpapoutsis
Copy link

Following the discussion on SE I'd like to describe in detail some workflows and the features required to make tSIP perfect for small to even mid-sized teams that take (or even make) lots of phone calls.

For this example there will be two users, A and B working for company BigBlue which sells bottled water.

Each user is on a PC running tSIP and accepting incoming sale/support/whatever calls from random numbers (that may or may no have called before).

tSIP rings, user A picks up. Random customer wants to buy 10 bottles. A tells them they cost $100 total and will take 2 days to deliver. A can also offer a 10% discount if they buy in the next 24 hours. Customer says they'll think about it and hangs up. A needs to write this down otherwise they won't be able to remember that discount they offered the customer.

tSIP rings, user B picks up. The customer, John Doe, bought lots of water last week and some of the bottles were leaky. B offers free replacement. Customer hangs up. B needs to write this down.

tSIP rings and rings and rings...

The goal is to track each (incoming) call, ie write down what was said on that call, which services may have been offered, at what prices, etc.

I know CRM with phone integration (TAPI, etc) is the correct answer but lets ignore CRM for now, this is tSIP repository.


First of all, the line between contacts and history will get blurry, you may or may not want this but having it is the best approach for scenarios like the one above.

I believe the best approach is as follows:

  1. (Using a proper database is a better option but keeping it file-based is much simpler)
  2. Create a folder "Contacts" in program directory or select one on a (network) drive
  3. Every time there's a call (in/out) create a json file in said folder (for example, 0049123456789.json), if one doesn't already exist
  4. In said file store info similar to this:
     { "Contact" : [
      {
         "name" : "",
         "company" : "",
         "file" : "",
         "uri" : "0049123456789",
         "parenturi" : " not really needed but someone can have multiple numbers,
                                 here you can link to the parent contact"
      }],
	  
   "CallHistory" : [
      {
         "incoming" : true,
         "originUri" : "0049123456789",
         "destUri" : "nick",
         "timestamp" : "yyyy-MM-ddTHH-mm-ssZ",
		 "notes" : {
			 "createdBy": "name of user/uri who added the note",
			 "note" : "This is a note"
		 } },
	   {
         "incoming" : false,
         "originUri" : "nick",
         "destUri" : "0049123456789",
         "timestamp" : "yyyy-MM-ddTHH-mm-ssZ",
		 "notes" : {
			 "createdBy": "name of user/uri who added the note",
			 "note" : "This is another note"
		 } }
	  ]}	  

	"MainNotes" : 
      {
         "notes" : "This is a note sitting on top of the notes per call from history",
         "timestampSinceLastEdit" : "yyyy-MM-ddTHH-mm-ssZ"
      },
	  
	"AlternativeBefierMainNotesWithVersionHistory" :
      {
         "{yyyy-MM-ddTHH:mm:ssZ}" : {
			 "createdby": "name of user who changed the note",
			 "note" : "This is the original note"
		 },
	 "{yyyy-MM-ddTHH:mm:ssZ}" : {
		 "createdby": "name of user who changed the note",
		 "note" : "This is the edited note that's now visible.
                               Older notes visible using 'move through time' functionality"
	 }
      }
  1. Make the notes window look like this:
    https://i.ibb.co/GCHZf2P/tsip-notes-ui-example.jpg
  2. You now have notes per individual call (in/out).
  3. You also get to have "main notes" (similar to the ones currently in tSIP) sitting above the call history for general stuff not tied to any particular call.
  4. During/after every call you get the chance to add notes to the entry for that call in the call history (notes window pops up automatically or manually).
  5. Add checks to make sure you are not losing notes. Use exclusive lock on json during edits. If a different user tries to edit the same file (unlikely, calls from the same number almost never happen one after the other) store data in temp file until json can be edited.
    Alternatively, copy json to memory, make edits, check it hasn't changed, replace (if it has changed, merge/ask user to resolve conflicts).
  6. Add some versioning/backup capabilities to protect files in case something happens.

I think I'm gonna stop here because it's getting way too long.
Have more ideas but the above will be good enough for most.

@tomek-o
Copy link
Owner

tomek-o commented Feb 23, 2020

I'll have to think about it, taking a break.
It seems to me at the moment that this should be put into separate executable (like RecordViewer.exe, not necessary general purpose CRM) or a plugin.

@nickpapoutsis
Copy link
Author

I understand. The scenario above describes what millions of people/teams worldwide go through every day and not all of them have (the money for) CRMs or CRMs with phone integration.

Implementing a more polished version of what I described will also allow you to monetize it, if you so wish.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants