Open nickpapoutsis opened 4 years ago
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.
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.
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:
(Using a proper database is a better option but keeping it file-based is much simpler)
Create a folder "Contacts" in program directory or select one on a (network) drive
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
In said file store info similar to this:
Make the notes window look like this: https://i.ibb.co/GCHZf2P/tsip-notes-ui-example.jpg
You now have notes per individual call (in/out).
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.
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).
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).
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.