The Bare Bones Guide to DDial Protocol DDial is a chat system using TCP/IP over Telnet (built in the early 1980s). The protocol does not use JSON or delimiter's, it is Message In Message Out with a formatting expectation. To connect your Ddial / Project to an existing ddial system for linking, you will need a Link Account from that station. For MagViz, email "iamjamesquick@gmail.com" for an account number - Once you recieve your login password you will connect over telnet to: magviz.ca port 2301. For other stations, contact their Sysop directly. Once you have your account password you can telnet out to that ddial station to connect in. For magviz, telnet: magviz.ca 2301, where you will be prompted for the password. Once connected, Any message you send out will be received as is. So if you simply sent: "Hello There", that is literally what all stations will see. This is where the ddial format is critical. For your project, you can of course Parse all incomming messages and ReFormat them into your own style; however, all outgoing messages must conform to the expected format. ////////////////////////////////////////////// // Public Message Format Message Requirements: Line Number, Bracket Identifer, Channer Number, Handle/Username, End bracket, Message, CRLF Example Public Message: #3[T1:Winter) hello there 1) Line: #3 2) Bracket: [ 3) Channel: T1 4) Line Type: : 5) Handle: Winter 6) End Bracket ) 7) Message: hello there 8) CRLF: \r\n 1) Lines: All users must be on a Unique Line Number from your station. Allowed line #'s are 0-7, 10-17, 20-27, etc. Although you could get away with using lines 8 and 9, they are techinically invalid line numbers, as ddial only had 7 modem slots. There are still some ddials that will not recognize any line number with 8 or 9 in it, so avoid these numbers to be safe. 2) User Brackets: Guests ( Members [ Cosysops < No other bracket is valid 3) Channels: Allowed channels 1-4. Typically links will only occur on channel 1. The T means "Tuned" to Channel. T1, T2, T3, T4. 4) Line Types: : User = Link 4) Handles: Typical handle length is 16 chars (best practice), do not exceed 25. Never Allow these Characters in a handle: ^ ) } \r \n ^ newline ) end of handle } broadcast message (see further down) \r carriage return \n newline 5) End Bracket: Because the end bracket ) can only appear once before the message, this is where you can parse and split messages if you need to get handle names and line numbers from each message for your project. Just look for the first IndexOf ")" 6) Message: Technically can be any length. Magviz will parse into multi-messages, but ddial protocol is about 255 char max. 7) CRLF: send each message with a final \r\n this should never be in any part of the message itself, it must be only once at the end. ///////////// Link Messages If a user is on a link, say line #99, you would prefix 99 to their message for display. This is only on your local station for people to see: #3[T1:Winter) hello there 99#2[T1:Freddy) heya Winter! ////////////////////////////////////////////// // Login and Logout messages } Member Login/Logoff }} Guest Login/Logoff . Station is Unlocked , Station is Locked (Ddials can lock their stations, meaning Guests cannot login) + Login - Logout Example Member Login RAW Format }-->. +^#6[T1:Jonny:#241* Example Login As Seen on DDial -->. + #6[T1:Jonny:#241* The } is parsed out for display All Carets ^ are formated as a NewLine #241 is the user Account Number * is optional for modern day use, can be omitted Note: you can reformat this message to reflect your own system, but all outgoing messages must appear in this format Ie, Magviz reformats to: Login #6[T1:Jonny) #241 Member Login (locked) }-->, +^#6[T1:Jonny:#241* Member Logout (locked) }-->, -^#6[T1:Jonny:#241* Guest Login (unlocked) }}-->. +^#3(T1:? Guest Logout (unlocked) }}-->. -^#3(T1:? Link Login (unlocked) }-->. +^#7[T1=Remote Link Logout (unlocked) }-->. -^#7[T1=Remote ////////////////////////////////////////////// // Station Broadcasts }}} Broadcast (Station List) Every 10-20 minutes a station will send a User Boradcast List This list shows all users on their system Typical ddials will display this in public chat If you are tracking users in a Userlist, you can parse this list and discard displaying This is an excellent way to ensure users are tracked properly, in the event a Login or Logout is not displayed for some reason, or you are connecting to a system that already has users online . Station is Unlocked , Station is Locked Exmaple Broadcast RAW Format }}}-.Magviz^#2[T1:Jonny:243^#4[T1:Samantha:320^#5(T1:Larry^#99[T1=Hard Drive Cafe:902 The above lists the name of your station first "Magviz", then shows each user connected. The last user is a Link to another station T1= The above would be displayed in ddial as: -.Magviz #2[T1:Jonny:243 #4[T1:Samantha:320 #5(T1:Larry #99[T1=Hard Drive Cafe:902 The }}} are parsed out for display All Carets ^ are formated as a NewLine ////////////////////////////////////////////// // Private Messages #1[T1:Jonny) hiya 99#2[T1:Cindy) hi all 9976#2[T1:Sam) hi User 99#2 is on the link. To send this, strip the 99 in the /p and send directly over the 99 link line User sends: /P992 hey how are ya? System sends on line 99: /P2 #3[T1:Winter) hey how are ya? User 8876#2 is a link user on the link (station of a station) User sends: /P99763 hey how are ya? System sends on line 99: /P763 #3[T1:Winter) hey how are ya? Private messages received from the Link will be in the same format as the ones you send, ie. /P1 #4[T1:Larry) hey man! You would then send this message to only local line #1 as: P#4[T1:Larry) hey man! ////////////////////////////////////////////// // HANDLE COLOR (optional) If you wish to colorize user handles.. #1[T1:ESC[##MyHandleESC[0m) message. Use ANSI ESC Color codes, true color, 255, or 16 color codes. ** You MUST terminate the color before the end ) bracket with ESC[0m ** Note, you can colorize each letter in the handle as desired ////////////////////////////////////////////// // Quick Reference Prefixes: } = Member Login/Logoff }} = Guest Login/Logoff }}} = Broadcast (Station List) Member Login/Logout: }-->. +^#6[T1=Remote }-->. +^#1[T1:Den:#111* }-->. -^#1[T1:Den:#111* Guest Login/Logout: }}-->. +^#1(T1:? }}-->. -^#1(T1:? Slots Move: (CarrierSync Protocol, Not D-Dial) }-->. x^#1 -> #6 Station List Broadcast From a Linked Station 7}}}-.CarrierSync^#6[T1=DigitalDial-MIA:901^#7[T1=Magviz-CAN:999 ^ ^^ | || | |+- Lock Status (Unlocked: ".", Locked: ",") | +-- Station List Identifier +------ Link Slot # Private Messages: /P0 77#6 Hey. Other Commands: /Kn /PS #0