[PHREAKNET-41] Allow for more granular billing based on switch ZIP code

ASTERISK-22
general: Fix various typos
SLACK-1
slack-client: Deadlock when relaying messages
ASTERISK-82
app_queue: Allow queue strategy to be manipulated externally
LBBS-58
net_irc: Make ping interval adjustable
ASTERISK-103
GitHub Issue 661 was not autoclosed by PR
PHREAKSCRIPT-28
app_predial: Failure to retrieve user agent property
LBBS-57
Occasional 100% CPU usage on SSH session termination
PHREAKNET-44
Show only sum of message units used per month on bills
ASTERISK-96
asterisk.adsi: Add Call Waiting Deluxe integration to resident script
PHREAKNET-41
Allow for more granular billing based on switch ZIP code
LBBS-56
net_snpp: Add Simple Network Paging Protocol support
ASTERISK-102
app_voicemail: Play RDNIS if present when listening to envelope
LBBS-55
net_telnet: Don't use strerror if res is 0
INTERLINKED-13
Comment and Close doesn't close issue
LBBS-53
Assertion when forwarding to external recipient
ASTERISK-46
dsp.c: Remove ast_ prefixes for static functions
ASTERISK-52
dsp.c: Add ast_freq_reset
PHREAKSCRIPT-20
dsp.c: coin DSP patch breaks faxing
ASTERISK-101
func_tonedetect: 2600 Hz detection not working or suboptimal
LBBS-54
mod_mailscript: Add RECIPIENT condition
WSSMAIL-11
Use accurate hyperlinks for folders
WSSMAIL-10
Can scroll down past bottom of page on larger screens
WSSMAIL-9
Sent email uploads can fail due to relative host difference
SLACK-3
examples: Add example program to log everything to a CSV
LBBS-52
net_smtp: Add limited support for VRFY and EXPN
PHREAKSCRIPT-27
res_msp not patched in during install
PHREAKSCRIPT-26
format_mp3 prereqs not always available
PHREAKNET-42
Provisioning fails for lines with certain features
ASTERISK-100
chan_dahdi: PRI lock held at module unload
LBBS-51
General TDD improvements
LBBS-50
mod_chanserv: NULL dereference when joining IRC channel
PHREAKNET-39
Splice Fred Covington prompts for speaking clock
PHREAKSCRIPT-25
chan_sccp no longer compiles
PHREAKNET-40
Recent Change provisioning bug increments device name by 1
ASTERISK-99
pjsip: Add Cisco CUCM patch functionality
ASTERISK-98
Add hangup callbacks
ASTERISK-97
func_groupcount: Add group vars
LBBS-49
Add functionality expected of a traditional BBS package
LBBS-48
net_irc: Support multi-server networks
WSSMAIL-8
Add NNTP support and IRC integration
EVERGREEN-3
Add NNTP support for newsgroups
LBBS-47
Email enhancements
LBBS-6
Add menu system scripting engine
LBBS-26
server_setup.sh: Autocreate all default directories
PHREAKSCRIPT-24
DAHDI builds in GitHub CI occasionally fail due to IPv6
PHREAKSCRIPT-23
res_phreaknet: Increase cURL timeout
LBBS-46
Block malicious mail servers after repeated failures
PHREAKSCAN-2
Improve automation
PHREAKSCRIPT-22
Add framehook to display dialed digits
PHREAKSCRIPT-21
app_looparound: Add LoopAround application
ASTERISK-95
testsuite README: Update outdated references
ASTERISK-94
app_chanspy: Fix bad audio with single direction operation
ASTERISK-93
chan_dahdi: DSP optimizations
LBBS-45
Use isoexec whenever possible
CAMI-1
Action Originate Returns -1
EVERGREEN-2
Navigation breaks when requirefromhelomatch=no in LBBS
ASTERISK-92
config.c: ast_variable_update doesn't update all instances
PHREAKSCRIPT-19
app_verify: Double free
PHREAKSCRIPT-18
Add better test coverage for 32-bit systems
PHREAKSCRIPT-17
res_phreaknet: iax.conf, et. al. are truncated when there is no disk space left
LBBS-44
io_tls: TLS errors when no certs are defined
LBBS-43
mod_discord: Improve handling of in-thread replies
LBBS-42
mod_discord: Actions not relayed properly from IRC
LBBS-41
socket.c: SEGV in bbs_node_readline
ASTERISK-91
features.c: Add warning to not set BRIDGE_NOANSWER as global variable
ASTERISK-90
chan_iax2: Add log message for rejected calls
ASTERISK-89
app_stack: Print proper exit location for PBXless channels
ASTERISK-88
chan_dahdi: Add ADSI on-hook download support
ASTERISK-87
asterisk.c: Prevent creation of duplicate Asterisk processes
ASTERISK-86
app_confbridge: Channel can join wrong bridge due to race condition
ASTERISK-85
chan_pjsip: Add channel encryption integration
ASTERISK-84
Add 'core show variables' command
ASTERISK-83
res_pjsip_device_features: Add forwarding and DND synchronization
ASTERISK-81
format_lame: MP3 read and write with LAME library
ASTERISK-80
app_record: Add RECORD_TIME function
ASTERISK-79
config.c: Make ast_variable_retrieve return last match
ASTERISK-78
sig_analog: Add Last Number Redial
ASTERISK-77
sig_analog: Add Call Waiting Deluxe support
LBBS-40
net_smtp: Add additional loop avoidance mechanisms
LBBS-39
net_smtp: Occasional memory corruption on email delivery
LBBS-38
mod_smtp_mailing_lists: Allow dynamic membership
LBBS-37
Restrict outgoing port 25 from containers while allowing other traffic
LBBS-36
net_telnet: Improve protocol support
LBBS-35
net_acap: Add ACAP protocol support
LBBS-34
net_xmpp: Add XMPP protocol support
LBBS-33
net_imap: Add/standardize commands to modify or purge keywords
LBBS-32
mod_spamassassin: Improve default spam handling
LBBS-31
mod_sieve: Major Sieve filtering overhaul and improvements
ASTERISK-76
app_dial: Allow MOH until progress received
ASTERISK-75
chan_dahdi: Add Call Hold feature
ASTERISK-74
chan_dahdi: Add AMI event for callwaiting
ASTERISK-73
chan_dahdi: Hunt to next trunk in group if busy
ASTERISK-72
chan_dahdi: Move documentation to separate file
PHREAKNET-38
Send reminder emails if requests are pending
WSSMAIL-7
Add ability for zero-trust type authentication
WSSMAIL-6
Add option to auto-reconnect if disconnected
LBBS-30
net_nntp: Complete overhaul/rewrite to use maildirs
LBBS-29
net_irc: Add reminder bot
LBBS-28
mod_discord: Warn users if IRC users are not online
LBBS-27
mod_irc_relay: Allow relaying of away/here status
PHREAKSCRIPT-16
app_selective: Missing pause after add/delete/instructions prompt
ASTERISK-71
app_if: ElseIf executed even if If is true
ASTERISK-70
loader.c: Print module build opt sums if they differ
ASTERISK-69
res_cli_originate: Allow specifying Caller ID on CLI
DAHTOOL-2
dahdi_cfg: Compiler warnings
DAHLIN-3
build: Compiler warnings
PHREAKSCRIPT-15
app_dialtone: t option should exclude matches that include #
LBBS-25
mod_mail_trash: Attempts to open files as directories
LBBS-24
build: Pre-reqs don't compile on Fedora
LBBS-23
net_smtp: DMARC reports not sent due to rejection of localhost
LBBS-22
mod_mail_trash: Eliminate bbs_pthread_cancel_kill
LBBS-21
net_imap: Proxy clients orphaned without associated IMAP session
LBBS-20
node.c: Occasional race conditions during node shutdown cause deadlock
LBBS-19
tls.c: Occasional SEGV at shutdowns of TLS connections
LBBS-18
net_ssh: High CPU trying to end SSH session
LBBS-17
Temporary files not always cleaned up
LBBS-16
io_compress: Occasional memory corruption on shutdown
ASTERISK-68
res_pjsip_sca: Segfaults on startup with SCA
LBBS-15
smtp: Locking errors, deadlock when queue runs during delivery
LBBS-14
net_imap: SEGV in strncmp
LBBS-13
pty.c: Attempt to lock previously destroyed mutex
LBBS-12
mod_webmail: client_flush_pending_output infinite loop
ASTERISK-67
voicemail.conf.sample: maxsilence/minsecs trigger warning
ASTERISK-66
app_sf: ReceiveSF not detecting incoming SF
PHREAKNET-37
Chirp should be audible upon on-hook of calls on a 2600 trunk
ASTERISK-65
sig_analog: Allow simple switch to time out to dialplan
ASTERISK-64
chan_dahdi: autoreoriginate doesn't work if caller hung up on
LBBS-11
door_evergreen: Use isonetexec instead of exec
EVERGREEN-1
Use default identity per folder
SLACK-2
README: Add missing pre-reqs
WSSMAIL-5
Add full attachment support
WSSMAIL-4
Add PHPMailer support for format=flowed
WSSMAIL-3
Message listing missing recipient for some messages
WSSMAIL-2
Implicitly mark messages read when deleting
WSSMAIL-1
Preview pane doesn't take up allotted space
LBBS-10
mod_sysop: Allow modifying user info from console
LBBS-9
mod_webmail: Improve MIME parsing to extract HTML/PT components
LBBS-8
net_imap: Accounts occasionally fail to load or are reordered
LBBS-7
Fix backspace detection/handling
LBBS-5
tests: Add TLS tests
LBBS-4
tests: Add tests that establish remote console connections
LBBS-3
module.c: Module ref tracking is flaky
LBBS-2
module.c: Improve module loading process
PHREAKNET-36
Trunking integration with Phil McCarter
PHREAKNET-35
TSPS improvements
PHREAKNET-34
Pat Fleet prompts
ASTERISK-63
Upstream certain PhreakScript modules
PHREAKNET-33
Finish TSPS web console
ASTERISK-62
app_followme: use enum for tmpuser->state
ASTERISK-61
func_groupcount: Add see-also for GROUP functions
ASTERISK-60
users.conf: Remove deprecated config file
ASTERISK-59
chan_dahdi: Remove stripmsd
ASTERISK-58
xml: Add config documentation
ASTERISK-57
bridging: Make DAHDI, always softmix bridging modules
ASTERISK-56
res_musiconhold: Add recursive files support
ASTERISK-55
chan_dahdi: add NUM_ANALOG_SUBS
ASTERISK-54
loader: Fix reloading using config name
ASTERISK-53
formats: add ulaw/alaw WAV support
ASTERISK-51
app_originate: Allow spooling future calls
PHREAKSCRIPT-14
app_selective: Allow wildcard * patterns
ASTERISK-50
app_dial: Fix or document r tonezone option
ASTERISK-49
Remove all deprecated stuff
ASTERISK-48
func_devstate: Delete empty from AstDB
ASTERISK-47
res_pjsip_session: Warn if no shared codecs
ASTERISK-45
app_voicemail: Option 4 at main menu
ASTERISK-44
format_pcm: Fix seek past end
DAHTOOL-1
system.conf: Fix typos
DAHLIN-2
Fix typos and dead links
ASTERISK-43
pbx_builtins: allow Answer to specify the channel
ASTERISK-42
sig_pri: Add CLI description
ASTERISK-41
app_confbridge: Document binaural_active
ASTERISK-40
pjsip: document MessageSend AOR limitation
ASTERISK-39
app_dial: ANSWEREDTIME documentation
ASTERISK-38
config: Fix missing config log consistency
ASTERISK-37
chan_pjsip: CALLERID(ani2) not working
ASTERISK-36
res_pjsip_logger: Add filtering by username
ASTERISK-35
sig_analog: Fix buffer overflow
ASTERISK-34
app_queue: Allow setting context at runtime
ASTERISK-33
docs: Update obsolete wiki links
ASTERISK-32
chan_dahdi: Allow Call Forwarding to be set/get programatically
ASTERISK-31
Add AMI event for assertion
ASTERISK-30
Add ast_channel_tech_name_match function
ASTERISK-29
chan_iax2: Add ${CHANNEL(authmethod)}
ASTERISK-28
ast_auto_answer: Use when possible
ASTERISK-27
chan_dahdi: add IS_FXO_SIG macro
ASTERISK-26
app_voicemail: make maxsecs user-configurable
ASTERISK-25
app_originate: allow early media, labels
ASTERISK-24
app_chanspy: Add no answer option
ASTERISK-23
logging: Update log levels
ASTERISK-21
app_dial: Remove dead debug code
ASTERISK-20
app_meetme: Update or remove removal version
LBBS-1
mod_slack: Workspace fails to initialize due to restrictions
DAHLIN-1
Makefile: remove update target
ASTERISK-19
chan_dahdi: Remove sig_analog paths
PHREAKSCRIPT-13
func_fsk_connectedline: Connected Line to FSK framehook
ASTERISK-18
func_frame_drop: Simplify and improve
ASTERISK-17
app.c: Add register multiple API for apps and funcs
ASTERISK-16
res_pbx_validate: Add commands to warn of dialplan problems
ASTERISK-15
chan_dahdi: Allow sending SDMF Caller ID
ASTERISK-14
musiconhold: Add custom generator for channels
PHREAKNET-32
Set up Millennium Manager
PHREAKSCAN-1
Raw data upload restricted to 15M
PHREAKNET-29
Requested Line
PHREAKNET-28
Phone Verification Failed
INTERLINKED-10
Telegrams can be sent by phone to non-subscribers
INTERLINKED-9
Phreaknet Directory link broken
INTERLINKED-8
Cannot use phreaknet wizard
PHREAKSCRIPT-12
Cannot utilize script because of patch issues
ASTERISK-13
Asterisk Framehook: DTMF to MF
INTERLINKED-7
TTY BBS lines (45.5+50) issues
PHREAKNET-22
Weather line international lookup problem
PHREAKNET-24
[REQ] TTY Telegrams
PHREAKNET-23
Wakeup calls not dialling at scheduled time
PHREAKNET-20
Billing based on individual CLLI zip codes
DOCS-2
Website not allowing me to log in
PHREAKNET-17
Director Listing Bulk Uploads Not Showing
PHREAKNET-16
RCMAC Provisioning is broken
ASTERISK-12
chan_dahdi: Make pulsemaketime, etc configurable
PHREAKNET-14
1+ calls do not work for single numbers
DOCS-1
Kickstart the wiki
ASTERISK-9
indications: Add support for >2 frequencies
INTERLINKED-6
PhreakNet Forums
ASTERISK-7
Improve sound control capabilities
PHREAKNET-11
Yealink T33G: add provisioning support
PHREAKNET-10
Enhanced utilization of Feature Group D
ASTERISK-11
chan_dahdi: Add wink guard
ASTERISK-10
Proctor application for DAHDI
PHREAKNET-9
General ARTNVAAXCG0 enhancements
PHREAKNET-8
Setup a Patreon to cover expenses
INTERLINKED-5
Update blue box
PHREAKSCRIPT-10
Update CiscoCallManager patch URL
ASTERISK-8
Optimize boilerplate RSA to MD5 fallback
INTERLINKED-4
InterLinked Issues API
PHREAKNET-7
Subscriber Service Disconnect Request Option
INTERLINKED-3
InterLinked API site is down
PHREAKNET-6
Verification flags international calls
ASTERISK-4
XML documentation examples
INTERLINKED-2
PhreakNet Email for BoD Members
PHREAKSCRIPT-8
Boilerplate force MD5 broken
ASTERISK-6
Resonant Filter To Simulate N-Carrier
PHREAKNET-3
Provide commissions to 976 number owners
PHREAKSCRIPT-9
Add DAHDI to build tests
PHREAKSCRIPT-7
Boilerplate musiconhold.conf is wrong
PHREAKSCRIPT-6
Trace autosend
INTERLINKED-1
Phone verification is broken
PHREAKSCRIPT-5
coindsp patch missing
PHREAKNET-5
Semipublic inward boilerplate broken
PHREAKSCRIPT-4
Add less invasive/deterministic modes
PHREAKNET-4
Hosted lines defaults exchange on error
PHREAKNET-2
Asterisk reload following unsuccessful call

← All Issues || New Issue →

Sort Normal || Priority

Details


Referencing Issues

[PHREAKNET-44] Show only sum of message units used per month on bills


This issue is loosely (but only loosely) related to [PHREAKNET-10] (no dependencies between the two). At a high level, this proposal is to allow associating a location with a particular switch, as opposed to requiring all switches associated with a user (!) (not even just a server) to share the same location.

This will involve updating all billing elements, including:

The most difficult part of updating the business logic will likely involve the process of determining the distance between the caller and callee. Currently, this is done by looking up the ZIP codes associated with the caller and callee. For the most part, as would be ideal, this is done in SQL. Many of the billing queries are already quite complicated. This will significantly increase the complexity, since we'll be going from simply going from number -> user -> ZIP code on both ends to something more along the lines of number -> switch -> GBP? (e.g. V&H, ZIP code, etc.) and if that's available, use that, otherwise fall back to switch -> user -> ZIP code. Additionally, if the GBP is not a ZIP code (and ideally, it would be more granular, like V&H), then we will have two incompatible units of measurement and will need a way of converting the distance between them.

A possible benefit of using V&H coordinates is we may be able to calculate the distance more easily, instead of needing a lookup table of the distance between every possible pair of ZIP codes (though I have not verified this). If this is the case, it may be ideal to convert everything to the new GBP system system-wide, i.e. associating every server (using the server as the top-level unit, instead of the user), with a GBP.

Worst case, we can manually go in and make up a GBP for every server based on the ZIP code, that would be relatively easy compared to the work to get to that point.

Chris summed this up nicely already so I'm copying/pasting his original proposal here, with the addition that there was some background on making use of V&H coordinates for the location rather than something larger, like a ZIP code:


I feel for the sake of clarity I should avoid any currently used terms and define the entity which carries the critical geographic information that billing is based on as the "Geographic Billing Point" or "GBP"

My idea would be that, either as a submenu of "my switches" or as its own somehow related page, there would be an option to create a Geographic Billing Point. This option, wherever it would be located, would be where things like City Name, State / Country, V&H / LAt and Long would be entered.

In this case, let's say I set up a "Memphis 1" GBP, and an "Atoka 1" GBP (Atoka being a rural area 30 miles north of Memphis, for the sake of a real reference point). I may, perhaps, go back to the My Switches" option and, on the page where one would edit a given switch, I could assign a GBP to a given Switch, and calls to and from that switch would treat that as the billing location.

The page to assign GBP's doesn't HAVE to be on My Switches, of course, it could be anywhere that makes sense. It's just the idea of "attaching" a GBP to a switch / CLLI which matters.

Back on the workflow example, in practice I could assign MMPHTNATMG0 and MMPHTNMAMG0 to Memphis 1, and assign MMPHTNTRSG0 to Atoka 1. This means calls between ATMG0 and MAMG0 would be local, managed whatever way is chosen for such calls, but a call to TRSG0 would be billed from MAMG0 at the rate of a 30 mile distant call. In this case, the same would be said the other way -- calls from Atoka 1 to Memphis 1 switches would be billed at that same rate, for simplicity sake in this description.

That's as far as I'm heavily concerned with this concept -- just enough that we have an internal location system that each switch owner maintains that would manage the physical location of a given switch, with the billing system taking over from there. This would accomplish the exact effect that I was going for with my original idea of each switch having it's own zip code assigned; it really is the same thing, but with improvements added on which are unrelated to my idea but not ignorable as they have been brought up in this discussion.

I apologize if this usage case description is somewhat vague, but I don't see the actual process as being too complex beyond creating a GBP, assigining it a geographic location, then assigning a switch(es) to it. Anything beyond that is, to me, it's own thing, not to be ignored but beyond the scope of my original idea.


Comments

You must be logged in to leave a comment.