UserProfileForm UserProfileForm 0 0 783 594 Twinkle - User Profile unnamed layout142 unnamed profileTextLabel User profile: profileComboBox 7 0 0 0 Select which profile you want to edit. User penguin.png SIP server package_network.png Voice mail mwi_none.png Instant message message32.png Presence presence.png RTP audio kmix.png SIP protocol package_system.png Transport/NAT yast_babelfish.png Address format yast_PhoneTTOffhook.png Timers clock.png Ring tones knotify.png Scripts edit.png Security encrypted32.png categoryListBox 1 7 0 0 150 0 0 Select a category for which you want to see or modify the settings. layout12 unnamed spacer8 Horizontal Expanding 441 20 okPushButton &OK Alt+O true Accept and save your changes. cancelPushButton &Cancel Alt+C Undo all your changes and close the window. settingsWidgetStack 7 5 0 0 Box pageUser 0 unnamed userTitleTextLabel 150 150 150 21 Box User 10 accountGroupBox SIP account unnamed usernameTextLabel &User name*: usernameLineEdit domainTextLabel &Domain*: domainLineEdit organizationTextLabel Or&ganization: organizationLineEdit usernameLineEdit The SIP user name given to you by your provider. It is the user part in your SIP address, <b>username</b>@domain.com This could be a telephone number. <br><br> This field is mandatory. domainLineEdit The domain part of your SIP address, username@<b>domain.com</b>. Instead of a real domain this could also be the hostname or IP address of your <b>SIP proxy</b>. If you want direct IP phone to IP phone communications then you fill in the hostname or IP address of your computer. <br><br> This field is mandatory. organizationLineEdit You may fill in the name of your organization. When you make a call, this might be shown to the called party. displayLineEdit This is just your full name, e.g. John Doe. It is used as a display name. When you make a call, this display name might be shown to the called party. dislpayTextLabel &Your name: displayLineEdit authenticationGroupBox SIP authentication unnamed authRealmTextLabel &Realm: authRealmLineEdit authNameTextLabel Authentication &name: authNameLineEdit authRealmLineEdit The realm for authentication. This value must be provided by your SIP provider. If you leave this field empty, then Twinkle will try the user name and password for any realm that it will be challenged with. authNameLineEdit Your SIP authentication name. Quite often this is the same as your SIP user name. It can be a different name though. authAkaAmfTextLabel AKA AM&F: authAkaAmfLineEdit authAkaOpTextLabel A&KA OP: authAkaOpLineEdit authPasswordLineEdit Password Your password for authentication. authPasswordTextLabel &Password: authPasswordLineEdit authAkaAmfLineEdit Authentication management field for AKAv1-MD5 authentication. authAkaOpLineEdit Operator variant key for AKAv1-MD5 authentication. spacer9 Vertical Expanding 20 110 pageSipServer 1 unnamed sipServerTitleTextLabel 150 150 150 21 Box SIP server 10 registrarGroupBox Registrar unnamed registrarTextLabel &Registrar: registrarLineEdit registrarLineEdit The hostname, domain name or IP address of your registrar. If you use an outbound proxy that is the same as your registrar, then you may leave this field empty and only fill in the address of the outbound proxy. expiryTextLabel &Expiry: expirySpinBox layout22 unnamed expirySpinBox 90 0 999999 100 The registration expiry time that Twinkle will request. secondsTextLabel seconds spacer1 Horizontal Expanding 260 20 regAtStartupCheckBox Re&gister at startup Alt+G Indicates if Twinkle should automatically register when you run this user profile. You should disable this when you want to do direct IP phone to IP phone communication without a SIP proxy. layout37 unnamed regAddQvalueCheckBox Add q-value to registration The q-value indicates the priority of your registered device. If besides Twinkle you register other SIP devices for this account, then the network may use these values to determine which device to try first when delivering a call. regQvalueLineEdit The q-value is a value between 0.000 and 1.000. A higher value means a higher priority. spacer48 Horizontal Expanding 210 20 outboundProxyGroupBox Outbound Proxy unnamed useProxyCheckBox &Use outbound proxy Alt+U Indicates if Twinkle should use an outbound proxy. If an outbound proxy is used then all SIP requests are sent to this proxy. Without an outbound proxy, Twinkle will try to resolve the SIP address that you type for a call invitation for example to an IP address and send the SIP request there. proxyTextLabel true Outbound &proxy: proxyLineEdit proxyNonResolvableCheckBox &Don't send a request to proxy if its destination can be resolved locally. Alt+D When you tick this option Twinkle will first try to resolve a SIP address to an IP address itself. If it can, then the SIP request will be sent there. Only when it cannot resolve the address, it will send the SIP request to the proxy (note that an in-dialog request will only be sent to the proxy in this case when you also ticked the previous option.) proxyLineEdit true The hostname, domain name or IP address of your outbound proxy. allRequestsCheckBox &Send in-dialog requests to proxy Alt+S SIP requests within a SIP dialog are normally sent to the address in the contact-headers exchanged during call setup. If you tick this box, that address is ignored and in-dialog request are also sent to the outbound proxy. spacer10 Vertical Expanding 20 100 pageRtpAudio 2 unnamed rtpAudioTitleTextLabel 150 150 150 21 Box RTP audio 10 rtpAudioTabWidget tabCodecs Co&decs unnamed layout18 unnamed ptimeTextLabel &G.711/G.726 payload size: ptimeSpinBox ptimeSpinBox 1 0 0 0 46 0 32767 32767 50 10 10 The preferred payload size for the G.711 and G.726 codecs. payloadMsTextLabel ms spacer24 Horizontal Expanding 121 20 inFarEndCodecPrefCheckBox &Follow codec preference from far end on incoming calls Alt+F <p> For incoming calls, follow the preference from the far-end (SDP offer). Pick the first codec from the SDP offer that is also in the list of active codecs. <p> If you disable this option, then the first codec from the active codecs that is also in the SDP offer is picked. outFarEndCodecPrefCheckBox Follow codec &preference from far end on outgoing calls Alt+P <p> For outgoing calls, follow the preference from the far-end (SDP answer). Pick the first codec from the SDP answer that is also in the list of active codecs. <p> If you disable this option, then the first codec from the active codecs that is also in the SDP answer is picked. spacer38 Vertical Expanding 20 16 codecsGroupBox Codecs unnamed layout19 unnamed availCodecTextLabel Available codecs: G.711 A-law G.711 u-law GSM speex-nb (8 kHz) speex-wb (16 kHz) speex-uwb (32 kHz) availCodecListBox Manual AlwaysOff List of available codecs. layout14 unnamed spacer17_2 Vertical Expanding 20 20 addCodecPushButton 1rightarrow.png Move a codec from the list of available codecs to the list of active codecs. rmvCodecPushButton 1leftarrow.png Move a codec from the list of active codecs to the list of available codecs. spacer18 Vertical Expanding 20 21 layout20 unnamed useCodecTextLabel Active codecs: activeCodecListBox List of active codecs. These are the codecs that will be used for media negotiation during call setup. The order of the codecs is the order of preference of use. layout15 unnamed spacer19_2 Vertical Expanding 20 21 upCodecPushButton 1uparrow.png Move a codec upwards in the list of active codecs, i.e. increase its preference of use. downCodecPushButton 1downarrow.png Move a codec downwards in the list of active codecs, i.e. decrease its preference of use. spacer20_2 Vertical Expanding 20 31 tabPreprocessing Prepr&ocessing unnamed preprocessingGroupBox Preprocessing (improves quality at remote end) unnamed layout23 unnamed spxDspAgcCheckBox &Automatic gain control Alt+A Automatic gain control (AGC) is a feature that deals with the fact that the recording volume may vary by a large amount between different setups. The AGC provides a way to adjust a signal to a reference volume. This is useful because it removes the need for manual adjustment of the microphone gain. A secondary advantage is that by setting the microphone gain to a conservative (low) level, it is easier to avoid clipping. spxDspAgcLevelTextLabel true Automatic gain control &level: spxDspAgcLevelSpinBox spxDspAgcLevelSpinBox true 100 1 Automatic gain control level represents percentual value of automatic gain setting of a microphone. Recommended value is about 25%. spxDspVadCheckBox &Voice activity detection Alt+V When enabled, voice activity detection detects whether the input signal represents a speech or a silence/background noise. spxDspNrdCheckBox &Noise reduction Alt+N The noise reduction can be used to reduce the amount of background noise present in the input signal. This provides higher quality speech. spxDspAecCheckBox Acoustic &Echo Cancellation Alt+E In any VoIP communication, if a speech from the remote end is played in the local loudspeaker, then it propagates in the room and is captured by the microphone. If the audio captured from the microphone is sent directly to the remote end, then the remote user hears an echo of his voice. An acoustic echo cancellation is designed to remove the acoustic echo before it is sent to the remote end. It is important to understand that the echo canceller is meant to improve the quality on the remote end. spacer24 Horizontal Expanding 31 20 spacer25 Vertical Expanding 20 121 tabIlbc &iLBC unnamed ilbcGroupBox iLBC unnamed layout16 unnamed ilbcPayloadTextLabel i&LBC payload type: ilbcPayloadSpinBox ilbcPayloadSizeTextLabel iLBC &payload size (ms): ilbcPayloadSizeComboBox layout17_2 unnamed ilbcPayloadSpinBox 127 96 The dynamic type value (96 or higher) to be used for iLBC. 20 30 ilbcPayloadSizeComboBox The preferred payload size for iLBC. spacer26 Horizontal Expanding 71 20 spacer29_2 Vertical Expanding 20 81 tabSpeex &Speex unnamed speexGroupBox Speex unnamed layout17_3 unnamed spxPenhCheckBox Perceptual &enhancement Alt+E Perceptual enhancement is a part of the decoder which, when turned on, tries to reduce (the perception of) the noise produced by the coding/decoding process. In most cases, perceptual enhancement make the sound further from the original objectively (if you use SNR), but in the end it still sounds better (subjective improvement). spxUwbPayloadTextLabel &Ultra wide band payload type: spxUwbPayloadSpinBox spxWbPayloadTextLabel &Wide band payload type: spxWbPayloadSpinBox spxVbrCheckBox Variable &bit-rate Alt+B Variable bit-rate (VBR) allows a codec to change its bit-rate dynamically to adapt to the "difficulty" of the audio being encoded. In the example of Speex, sounds like vowels and high-energy transients require a higher bit-rate to achieve good quality, while fricatives (e.g. s,f sounds) can be coded adequately with less bits. For this reason, VBR can achieve a lower bit-rate for the same quality, or a better quality for a certain bit-rate. Despite its advantages, VBR has two main drawbacks: first, by only specifying quality, there's no guarantee about the final average bit-rate. Second, for some real-time applications like voice over IP (VoIP), what counts is the maximum bit-rate, which must be low enough for the communication channel. spxUwbPayloadSpinBox 127 96 The dynamic type value (96 or higher) to be used for speex wide band. spxDtxCheckBox Discontinuous &Transmission Alt+T Discontinuous transmission is an addition to VAD/VBR operation, that allows to stop transmitting completely when the background noise is stationary. spxWbPayloadSpinBox 127 96 The dynamic type value (96 or higher) to be used for speex wide band. spxNbPayloadSpinBox 127 96 The dynamic type value (96 or higher) to be used for speex narrow band. spxQualityTextLabel &Quality: spxQualitySpinBox spxQualitySpinBox 10 0 Speex is a lossy codec, which means that it achives compression at the expense of fidelity of the input speech signal. Unlike some other speech codecs, it is possible to control the tradeoff made between quality and bit-rate. The Speex encoding process is controlled most of the time by a quality parameter that ranges from 0 to 10. spxComplexityTextLabel Co&mplexity: spxComplexitySpinBox spxComplexitySpinBox 10 1 With Speex, it is possible to vary the complexity allowed for the encoder. This is done by controlling how the search is performed with an integer ranging from 1 to 10 in a way that's similar to the -1 to -9 options to gzip and bzip2 compression utilities. For normal use, the noise level at complexity 1 is between 1 and 2 dB higher than at complexity 10, but the CPU requirements for complexity 10 is about 5 times higher than for complexity 1. In practice, the best trade-off is between complexity 2 and 4, though higher settings are often useful when encoding non-speech sounds like DTMF tones. spxNbPayloadTextLabel &Narrow band payload type: spxNbPayloadSpinBox spacer23_2 Horizontal Expanding 31 20 spacer30_2 Vertical Expanding 20 121 tabG726 G.726 unnamed g726GroupBox G.726 unnamed layout22 unnamed g72640PayloadTypeTextLabel G.726 &40 kbps payload type: g72640PayloadSpinBox g72640PayloadSpinBox 127 96 The dynamic type value (96 or higher) to be used for G.726 40 kbps. g72632PayloadSpinBox 127 0 The dynamic type value (96 or higher) to be used for G.726 32 kbps. g72624PayloadTypeTextLabel G.726 &24 kbps payload type: g72624PayloadSpinBox g72624PayloadSpinBox 127 96 The dynamic type value (96 or higher) to be used for G.726 24 kbps. g72632PayloadTypeTextLabel G.726 &32 kbps payload type: g72632PayloadSpinBox g72616PayloadSpinBox 127 96 The dynamic type value (96 or higher) to be used for G.726 16 kbps. g72616PayloadTypeTextLabel G.726 &16 kbps payload type: g72616PayloadSpinBox spacer31 Horizontal Expanding 231 20 layout41 unnamed g726PackingTextLabel Codeword &packing order: g726PackComboBox RFC 3551 ATM AAL2 g726PackComboBox There are 2 standards to pack the G.726 codewords into an RTP packet. RFC 3551 is the default packing method. Some SIP devices use ATM AAL2 however. If you experience bad quality using G.726 with RFC 3551 packing, then try ATM AAL2 packing. spacer40_2 Horizontal Expanding 141 20 spacer32 Vertical Expanding 20 150 tabDtmf DT&MF unnamed dtmfGroupBox DTMF unnamed spacer17 Horizontal Expanding 280 20 layout8 unnamed dtmfPayloadTypeSpinBox 1 0 0 0 49 0 32767 32767 127 96 The dynamic type value (96 or higher) to be used for DTMF events (RFC 2833). dtmfDurationMsTextLabel ms dtmfVolumeTextLabel DTMF vo&lume: dtmfVolumeSpinBox dtmfVolumeSpinBox 0 -63 10 -10 The power level of the DTMF tone in dB. dtmfPauseSpinBox 1 0 0 0 49 0 32767 32767 100 20 10 The pause after a DTMF tone. dtmfDurationTextLabel DTMF &duration: dtmfDurationSpinBox dtmfPauseMsTextLabel ms dtmfPayloadTypeTextLabel DTMF payload &type: dtmfPayloadTypeSpinBox dtmfPauseTextLabel DTMF &pause: dtmfPauseSpinBox dtmfVolDbmTextLabel dB dtmfDurationSpinBox 1 0 0 0 49 0 32767 32767 500 40 10 Duration of a DTMF tone. layout15 unnamed dtmfTransportTextLabel DTMF t&ransport: dtmfTransportComboBox Auto RFC 2833 Inband Out-of-band (SIP INFO) dtmfTransportComboBox <h2>RFC 2833</h2> <p>Send DTMF tones as RFC 2833 telephone events.</p> <h2>Inband</h2> <p>Send DTMF inband.</p> <h2>Auto</h2> <p>If the far end of your call supports RFC 2833, then a DTMF tone will be send as RFC 2833 telephone event, otherwise it will be sent inband. </p> <h2>Out-of-band (SIP INFO)</h2> <p> Send DTMF out-of-band via a SIP INFO request. </p> spacer22_2 Horizontal Expanding 161 20 spacer23_3 Vertical Expanding 20 120 pageSipProtocol 3 unnamed sipProtocolTitleTextLabel 150 150 150 21 Box SIP protocol 10 sipProtoclTabWidget tab General unnamed spacer24_2 Vertical Expanding 20 16 optionsGroupBox Protocol options unnamed holdVariantTextLabel Call &Hold variant: holdVariantComboBox RFC 2543 RFC 3264 holdVariantComboBox 1 0 0 0 110 0 Indicates if RFC 2543 (set media IP address in SDP to 0.0.0.0) or RFC 3264 (use direction attributes in SDP) is used to put a call on-hold. spacer4 Horizontal Expanding 70 20 missingContactCheckBox Allow m&issing Contact header in 200 OK on REGISTER Alt+I A 200 OK response on a REGISTER request must contain a Contact header. Some registrars however, do not include a Contact header or include a wrong Contact header. This option allows for such a deviation from the specs. maxForwardsCheckBox &Max-Forwards header is mandatory Alt+M According to RFC 3261 the Max-Forwards header is mandatory. But many implementations do not send this header. If you tick this box, Twinkle will reject a SIP request if Max-Forwards is missing. regTimeCheckBox Put &registration expiry time in contact header Alt+R In a REGISTER message the expiry time for registration can be put in the Contact header or in the Expires header. If you tick this box it will be put in the Contact header, otherwise it goes in the Expires header. compactHeadersCheckBox &Use compact header names Alt+U Indicates if compact header names should be used for headers that have a compact form. allowSdpChangeCheckBox Allow SDP change during call setup <p>A SIP UAS may send SDP in a 1XX response for early media, e.g. ringing tone. When the call is answered the SIP UAS should send the same SDP in the 200 OK response according to RFC 3261. Once SDP has been received, SDP in subsequent responses should be discarded.</p> <p>By allowing SDP to change during call setup, Twinkle will not discard SDP in subsequent responses and modify the media stream if the SDP is changed. When the SDP in a response is changed, it must have a new version number in the o= line.</p> useDomainInContactCheckBox Use domain &name to create a unique contact header value Alt+N <p> Twinkle creates a unique contact header value by combining the SIP user name and domain: </p> <p> <tt>&nbsp;user_domain@local_ip</tt> </p> <p> This way 2 user profiles, having the same user name but different domain names, have unique contact addresses and hence can be activated simultaneously. </p> <p> Some proxies do not handle a contact header value like this. You can disable this option to get a contact header value like this: </p> <p> <tt>&nbsp;user@local_ip</tt> </p> <p> This format is what most SIP phones use. </p> multiValuesListCheckBox &Encode Via, Route, Record-Route as list Alt+E The Via, Route and Record-Route headers can be encoded as a list of comma separated values or as multiple occurrences of the same header. redirectionGroupBox Redirection unnamed allowRedirectionCheckBox &Allow redirection Alt+A Indicates if Twinkle should redirect a request if a 3XX response is received. askUserRedirectCheckBox Ask user &permission to redirect Alt+P Indicates if Twinkle should ask the user before redirecting a request when a 3XX response is received. maxRedirectTextLabel Max re&directions: maxRedirectSpinBox maxRedirectSpinBox 1 0 0 0 46 0 5 1 The number of redirect addresses that Twinkle tries at a maximum before it gives up redirecting a request. This prevents a request from getting redirected forever. spacer5 Horizontal Expanding 80 20 sipExtensionsGroupBox SIP extensions unnamed disabled supported required preferred ext100relComboBox 1 0 0 0 120 0 Indicates if the 100rel extension (PRACK) is supported:<br><br> <b>disabled</b>: 100rel extension is disabled <br><br> <b>supported</b>: 100rel is supported (it is added in the supported header of an outgoing INVITE). A far-end can now require a PRACK on a 1xx response. <br><br> <b>required</b>: 100rel is required (it is put in the require header of an outgoing INVITE). If an incoming INVITE indicates that it supports 100rel, then Twinkle will require a PRACK when sending a 1xx response. A call will fail when the far-end does not support 100rel. <br><br> <b>preferred</b>: Similar to required, but if a call fails because the far-end indicates it does not support 100rel (420 response) then the call will be re-attempted without the 100rel requirement. ext100relTextLabel &100 rel (PRACK): ext100relComboBox extReplacesCheckBox Replaces Indicates if the Replaces-extenstion is supported. tab REFER unnamed referGroupBox Call transfer (REFER) unnamed allowReferCheckBox Accept call &transfer request (incoming REFER) Alt+T Indicates if Twinkle should transfer a call if a REFER request is received. askUserReferCheckBox As&k user permission to transfer Alt+K Indicates if Twinkle should ask the user before transferring a call when a REFER request is received. refereeHoldCheckBox Hold call &with referrer while setting up call to transfer target Alt+W Indicates if Twinkle should put the current call on hold when a REFER request to transfer a call is received. referrerHoldCheckBox Ho&ld call with referee before sending REFER Alt+L Indicates if Twinkle should put the current call on hold when you transfer a call. refreshReferSubCheckBox Auto re&fresh subscription to refer event while call transfer is not finished Alt+F While a call is being transferred, the referee sends NOTIFY messages to the referrer about the progress of the transfer. These messages are only sent for a short interval which length is determined by the referee. If you tick this box, the referrer will automatically send a SUBSCRIBE to lengthen this interval if it is about to expire and the transfer has not yet been completed. referAorCheckBox Attended refer to AoR (Address of Record) An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endoint. transferConsultInprogCheckBox Allow call transfer while consultation in progress When you perform an attended call transfer, you normally transfer the call after you established a consultation call. If you enable this option you can transfer the call while the consultation call is still in progress. This is a non-standard implementation and may not work with all SIP devices. spacer25 Vertical Expanding 20 200 TabPage Privacy unnamed privacyGroupBox Privacy options unnamed pPreferredIdCheckBox &Send P-Preferred-Identity header when hiding user identity Alt+S Include a P-Preferred-Identity header with your identity in an INVITE request for a call with identity hiding. spacer40 Vertical Expanding 20 331 pageNat 4 unnamed NatTitleTextLabel 150 150 150 21 Box Transport/NAT 10 transportGroupBox SIP transport unnamed Auto UDP TCP sipTransportComboBox Transport mode for SIP. In auto mode, the size of a message determines which transport protocol is used. Messages larger than the UDP threshold are sent via TCP. Smaller messages are sent via UDP. spacer46 Horizontal Expanding 151 20 sipTransportTextLabel T&ransport protocol: sipTransportComboBox udpThresholdTextLabel UDP t&hreshold: udpThresholdSpinBox udpThresholdSpinBox bytes 65535 100 1300 Messages larger than the threshold are sent via TCP. Smaller messages are sent via UDP. spacer47 Horizontal Expanding 81 20 natTraversalButtonGroup_ NAT traversal unnamed natNoneRadioButton &NAT traversal not needed Alt+N Choose this option when there is no NAT device between you and your SIP proxy or when your SIP provider offers hosted NAT traversal. natStaticRadioButton &Use statically configured public IP address inside SIP messages Alt+U Indicates if Twinkle should use the public IP address specified in the next field inside SIP message, i.e. in SIP headers and SDP body instead of the IP address of your network interface.<br><br> When you choose this option you have to create static address mappings in your NAT device as well. You have to map the RTP ports on the public IP address to the same ports on the private IP address of your PC. layout32 unnamed publicIPTextLabel &Public IP address: 21 publicIPLineEdit publicIPLineEdit The public IP address of your NAT. natStunRadioButton Use &STUN (does not work for incoming TCP) Alt+S Choose this option when your SIP provider offers a STUN server for NAT traversal. layout33 unnamed stunServerTextLabel S&TUN server: 21 stunServerLineEdit stunServerLineEdit The hostname, domain name or IP address of the STUN server. persistentTcpCheckBox P&ersistent TCP connection Alt+E Keep the TCP connection established during registration open such that the SIP proxy can reuse this connection to send incoming requests. Application ping packets are sent to test if the connection is still alive. natKeepaliveCheckBox Enable NAT &keep alive Alt+K Send UDP NAT keep alive packets. spacer19 Vertical Expanding 20 80 pageAddressFormat 5 unnamed addressFormatTitleTextLabel 150 150 150 21 Box Address format 10 telNumberGroupBox Telephone numbers unnamed displayTelUserCheckBox Only &display user part of URI for telephone number Alt+D If a URI indicates a telephone number, then only display the user part. E.g. if a call comes in from sip:123456@twinklephone.com then display only "123456" to the user. A URI indicates a telephone number if it contains the "user=phone" parameter or when it has a numerical user part and you ticked the next option. numericalUserIsTelCheckBox &URI with numerical user part is a telephone number Alt+U If you tick this option, then Twinkle considers a SIP address that has a user part that consists of digits, *, #, + and special symbols only as a telephone number. In an outgoing message, Twinkle will add the "user=phone" parameter to such a URI. removeSpecialCheckBox &Remove special symbols from numerical dial strings Alt+R Telephone numbers are often written with special symbols like dashes and brackets to make them readable to humans. When you dial such a number the special symbols must not be dialed. To allow you to simply copy/paste such a number into Twinkle, Twinkle can remove these symbols when you hit the dial button. useTelUriCheckBox Use tel-URI for telephone &number Alt+N Expand a dialed telephone number to a tel-URI instead of a sip-URI. specialTextLabel &Special symbols: specialLineEdit specialLineEdit The special symbols that may be part of a telephone number for nice formatting, but must be removed when dialing. conversionGroupBox Number conversion unnamed layout29 unnamed Match expression true true Replace true true conversionListView true AllColumns <p> Often the format of the telphone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects '00' instead of the '+', or you are at the office and all your numbers need to be prefixed with a '9' to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings. </p> <p> For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged. </p> <p> The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want. </p> <h3>Example 1</h3> <p> Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the '+31' and replace it by a '0'. For dialling numbers abroad you just want to replace the '+' by '00'. </p> <p> The following rules will do the trick: </p> <blockquote> <tt> Match expression = \+31([0-9]*) , Replace = 0$1<br> Match expression = \+([0-9]*) , Replace = 00$1</br> </tt> </blockquote> <h3>Example 2</h3> <p> You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line. </p> <blockquote> <tt> Match expression = 0[0-9]* , Replace = 9$&<br> </tt> </blockquote> layout15_2 unnamed spacer19_2_2 Vertical Expanding 20 21 upConversionPushButton 1uparrow.png Move the selected number conversion rule upwards in the list. downConversionPushButton 1downarrow.png Move the selected number conversion rule downwards in the list. spacer20_2_2 Vertical Expanding 20 31 layout30 unnamed addConversionPushButton &Add Alt+A Add a number conversion rule. removePushButton Re&move Alt+M Remove the selected number conversion rule. editConversionPushButton &Edit Alt+E Edit the selected number conversion rule. spacer38_2 Horizontal Expanding 291 20 layout24 unnamed testConversionLineEdit Type a telephone number here an press the Test button to see how it is converted by the list of number conversion rules. testConversionPushButton &Test Alt+T Test how a number is converted by the number conversion rules. spacer20 Vertical Expanding 20 20 pageTimers 6 unnamed timersTitleTextLabel 150 150 150 21 Box Timers 10 layout7 unnamed layout6 unnamed secNoanswerTextLabel seconds tmrNatKeepaliveSpinBox 0 0 0 0 55 0 55 32767 900 10 10 If you have enabled STUN or NAT keep alive, then Twinkle will send keep alive packets at this interval rate to keep the address bindings in your NAT device alive. tmrNoanswerSpinBox 0 0 0 0 55 0 55 32767 600 10 When an incoming call is received, this timer is started. If the user answers the call, the timer is stopped. If the timer expires before the user answers the call, then Twinkle will reject the call with a "480 User Not Responding". tmrNatKeepaliveTextLabel NAT &keep alive: tmrNatKeepaliveSpinBox tmrNoanswerTextLabel &No answer: tmrNoanswerSpinBox spacer23 Horizontal Expanding 270 20 spacer22 Vertical Expanding 20 450 pageRingTones 7 unnamed ringtonesTitleTextLabel 150 150 150 21 Box Ring tones 10 layout18 unnamed openRingbackToolButton TabFocus fileopen.png Select ring back tone file. openRingtoneToolButton TabFocus fileopen.png Select ring tone file. ringbackTextLabel Ring &back tone: ringbackLineEdit ringbackLineEdit <p> Specify the file name of a .wav file that you want to be played as ring back tone for this user. </p> <p> This ring back tone overrides the ring back tone settings in the system settings. </p> ringtoneLineEdit <p> Specify the file name of a .wav file that you want to be played as ring tone for this user. </p> <p> This ring tone overrides the ring tone settings in the system settings. </p> ringtoneTextLabel &Ring tone: ringtoneLineEdit spacer30 Vertical Expanding 20 391 pageScripts 8 unnamed scriptsTitleTextLabel 150 150 150 21 Box Scripts 10 layout19 unnamed localReleaseLineEdit <p> This script is called when you release a call. </p> <h2>Environment variables</h2> <p> The values of all SIP headers of the outgoing SIP BYE request are passed in environment variables to your script. </p> <p> <b>TWINKLE_TRIGGER=local_release</b>. <b>SIPREQUEST_METHOD=BYE</b>. <b>SIPREQUEST_URI</b> contains the request-URI of the BYE. The name of the user profile will be passed in <b>TWINKLE_USER_PROFILE</b>. openInCallFailedToolButton TabFocus fileopen.png Select script file. openIncomingCallScriptToolButton TabFocus fileopen.png Select script file. openOutCallAnsweredToolButton TabFocus fileopen.png Select script file. inCallFailedLineEdit <p> This script is called when an incoming call fails. </p> <h2>Environment variables</h2> <p> The values of all SIP headers of the outgoing SIP failure response are passed in environment variables to your script. </p> <p> <b>TWINKLE_TRIGGER=in_call_failed</b>. <b>SIPSTATUS_CODE</b> contains the status code of the failure response. <b>SIPSTATUS_REASON</b> contains the reason phrase. The name of the user profile will be passed in <b>TWINKLE_USER_PROFILE</b>. openInCallAnsweredToolButton TabFocus fileopen.png Select script file. remoteReleaseLineEdit <p> This script is called when the remote party releases a call. </p> <h2>Environment variables</h2> <p> The values of all SIP headers of the incoming SIP BYE request are passed in environment variables to your script. </p> <p> <b>TWINKLE_TRIGGER=remote_release</b>. <b>SIPREQUEST_METHOD=BYE</b>. <b>SIPREQUEST_URI</b> contains the request-URI of the BYE. The name of the user profile will be passed in <b>TWINKLE_USER_PROFILE</b>. openOutCallToolButton TabFocus fileopen.png Select script file. incomingCallScriptLineEdit <p> You can customize the way Twinkle handles incoming calls. Twinkle can call a script when a call comes in. Based on the ouput of the script Twinkle accepts, rejects or redirects the call. When accepting the call, the ring tone can be customized by the script as well. The script can be any executable program. </p> <p> <b>Note:</b> Twinkle pauses while your script runs. It is recommended that your script does not take more than 200 ms. When you need more time, you can send the parameters followed by <b>end</b> and keep on running. Twinkle will continue when it receives the <b>end</b> parameter. </p> <p> With your script you can customize call handling by outputing one or more of the following parameters to stdout. Each parameter should be on a separate line. </p> <p> <blockquote> <tt> action=[ continue | reject | dnd | redirect | autoanswer ]<br> reason=&lt;string&gt;<br> contact=&lt;address to redirect to&gt;<br> caller_name=&lt;name of caller to display&gt;<br> ringtone=&lt;file name of .wav file&gt;<br> display_msg=&lt;message to show on display&gt;<br> end<br> </tt> </blockquote> </p> <h2>Parameters</h2> <h3>action</h3> <p> <b>continue</b> - continue call handling as usual<br> <b>reject</b> - reject call<br> <b>dnd</b> - deny call with do not disturb indication<br> <b>redirect</b> - redirect call to address specified by <b>contact</b><br> <b>autoanswer</b> - automatically answer a call<br> </p> <p> When the script does not write an action to stdout, then the default action is continue. </p> <p> <b>reason: </b> With the reason parameter you can set the reason string for reject or dnd. This might be shown to the far-end user. </p> <p> <b>caller_name: </b> This parameter will override the display name of the caller. </p> <p> <b>ringtone: </b> The ringtone parameter specifies the .wav file that will be played as ring tone when action is continue. </p> <h2>Environment variables</h2> <p> The values of all SIP headers in the incoming INVITE message are passed in environment variables to your script. The variable names are formatted as <b>SIP_&lt;HEADER_NAME&gt;</b> E.g. SIP_FROM contains the value of the from header. </p> <p> TWINKLE_TRIGGER=in_call. SIPREQUEST_METHOD=INVITE. The request-URI of the INVITE will be passed in <b>SIPREQUEST_URI</b>. The name of the user profile will be passed in <b>TWINKLE_USER_PROFILE</b>. outCallAnsweredLineEdit <p> This script is called when the remote party answers your call. </p> <h2>Environment variables</h2> <p> The values of all SIP headers of the incoming 200 OK are passed in environment variables to your script. </p> <p> <b>TWINKLE_TRIGGER=out_call_answered</b>. <b>SIPSTATUS_CODE=200</b>. <b>SIPSTATUS_REASON</b> contains the reason phrase. The name of the user profile will be passed in <b>TWINKLE_USER_PROFILE</b>. inCallAnsweredLineEdit <p> This script is called when you answer an incoming call. </p> <h2>Environment variables</h2> <p> The values of all SIP headers of the outgoing 200 OK are passed in environment variables to your script. </p> <p> <b>TWINKLE_TRIGGER=in_call_answered</b>. <b>SIPSTATUS_CODE=200</b>. <b>SIPSTATUS_REASON</b> contains the reason phrase. The name of the user profile will be passed in <b>TWINKLE_USER_PROFILE</b>. localReleaseTextLabel Call released locall&y: inCallFailedLineEdit openOutCallFailedToolButton TabFocus fileopen.png Select script file. outCallFailedLineEdit <p> This script is called when an outgoing call fails. </p> <h2>Environment variables</h2> <p> The values of all SIP headers of the incoming SIP failure response are passed in environment variables to your script. </p> <p> <b>TWINKLE_TRIGGER=out_call_failed</b>. <b>SIPSTATUS_CODE</b> contains the status code of the failure response. <b>SIPSTATUS_REASON</b> contains the reason phrase. The name of the user profile will be passed in <b>TWINKLE_USER_PROFILE</b>. outCallLineEdit <p> This script is called when you make a call. </p> <h2>Environment variables</h2> <p> The values of all SIP headers of the outgoing INVITE are passed in environment variables to your script. </p> <p> <b>TWINKLE_TRIGGER=out_call</b>. <b>SIPREQUEST_METHOD=INVITE</b>. <b>SIPREQUEST_URI</b> contains the request-URI of the INVITE. The name of the user profile will be passed in <b>TWINKLE_USER_PROFILE</b>. outCallAnsweredTextLabel Outgoing call a&nswered: inCallAnsweredLineEdit inCallFailedTextLabel Incoming call &failed: inCallFailedLineEdit incomingCallScriptTextLabel &Incoming call: incomingCallScriptLineEdit openLocalReleaseToolButton TabFocus fileopen.png Select script file. remoteReleaseTextLabel Call released &remotely: inCallFailedLineEdit inCallAnsweredTextLabel Incoming call &answered: inCallAnsweredLineEdit openRemoteReleaseToolButton TabFocus fileopen.png Select script file. outCallTextLabel O&utgoing call: incomingCallScriptLineEdit outCallFailedTextLabel Out&going call failed: inCallFailedLineEdit spacer29 Vertical Expanding 20 190 pageSecurity 9 unnamed securityTitleTextLabel 150 150 150 21 Box Security 10 zrtpEnabledCheckBox &Enable ZRTP/SRTP encryption Alt+E When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unecrypted. zrtpSettingsGroupBox ZRTP settings unnamed zrtpSendIfSupportedCheckBox O&nly encrypt audio if remote party indicated ZRTP support in SDP Alt+N A SIP endpoint supporting ZRTP may indicate ZRTP support during call setup in its signalling. Enabling this option will cause Twinkle only to encrypt calls when the remote party indicates ZRTP support. zrtpSdpCheckBox &Indicate ZRTP support in SDP Alt+I Twinkle will indicate ZRTP support during call setup in its signalling. zrtpGoClearWarningCheckBox &Popup warning when remote party disables encryption during call Alt+P A remote party of an encrypted call may send a ZRTP go-clear command to stop encryption. When Twinkle receives this command it will popup a warning if this option is enabled. spacer33 Vertical Expanding 20 241 pageVoiceMail 10 unnamed voiceMailTextLabel 150 150 150 21 Box Voice mail 10 layout39 unnamed vmAddressTextLabel &Voice mail address: vmAddressLineEdit vmAddressLineEdit The SIP address or telephone number to access your voice mail. layout38 unnamed Unsollicited Sollicited mwiTypeComboBox <H2>Message waiting indication type</H2> <p> If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered. </p> <H3>Unsollicited</H3> <p> Asterisk provides unsollicited message waiting indication. </p> <H3>Sollicited</H3> <p> Sollicited message waiting indication as specified by RFC 3842. </p> spacer39 Horizontal Expanding 221 20 mwiTypeTextLabel &MWI type: mwiTypeComboBox mwiSollicitedGroupBox Sollicited MWI unnamed layout36 unnamed spacer35 Horizontal Expanding 120 20 mwiDurationTextLabel Subscription &duration: mwiDurationSpinBox mwiUserTextLabel Mailbox &user name: mwiUserLineEdit mwiServerLineEdit The hostname, domain name or IP address of your voice mailbox server. layout35 unnamed mwiDurationSpinBox 90 0 999999 100 For sollicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription. mwiSecondsTextLabel seconds spacer36 Horizontal Expanding 190 20 mwiUserLineEdit Your user name for accessing your voice mailbox. mwiServerTextLabel Mailbox &server: mwiServerLineEdit mwiViaProxyCheckBox Via outbound &proxy Alt+P Check this option if Twinkle should send SIP messages to the mailbox server via the outbound proxy. spacer38_3 Vertical Expanding 20 211 pageIM 11 unnamed imTextLabel 150 150 150 21 Box Instant message 10 layout74 unnamed imMaxSessionsTextLabel &Maximum number of sessions: imMaxSessionsSpinBox imMaxSessionsSpinBox 65535 When you have this number of instant message sessions open, new incoming message sessions will be rejected. spacer42 Horizontal Expanding 201 20 isComposingCheckBox &Send composing indications when typing a message. Alt+S Twinkle sends a composing indication when you type a message. This way the recipient can see that you are typing. spacer40_3 Vertical Expanding 20 350 pagePresence 12 unnamed presTextLabel 150 150 150 21 Box Presence 10 presYourGroupBox Your presence unnamed presPublishCheckBox &Publish availability at startup Alt+P Publish your availability at startup. layout75 unnamed presPublishTimerTextLabel Publication &refresh interval (sec): presPublishTimeSpinBox presPublishTimeSpinBox 999999 100 Refresh rate of presence publications. spacer43 Horizontal Expanding 231 20 groupBox25 Buddy presence unnamed layout76 unnamed presSubscribeTimerTextLabel &Subscription refresh interval (sec): presSubscribeTimeSpinBox presSubscribeTimeSpinBox 999999 100 Refresh rate of presence subscriptions. spacer44 Horizontal Expanding 191 20 spacer45 Vertical Expanding 20 281 categoryListBox highlighted(int) UserProfileForm showCategory(int) cancelPushButton clicked() UserProfileForm reject() okPushButton clicked() UserProfileForm validate() useProxyCheckBox toggled(bool) proxyTextLabel setEnabled(bool) useProxyCheckBox toggled(bool) proxyLineEdit setEnabled(bool) useProxyCheckBox toggled(bool) allRequestsCheckBox setEnabled(bool) allowRedirectionCheckBox toggled(bool) askUserRedirectCheckBox setEnabled(bool) allowRedirectionCheckBox toggled(bool) maxRedirectTextLabel setEnabled(bool) allowRedirectionCheckBox toggled(bool) maxRedirectSpinBox setEnabled(bool) useProxyCheckBox toggled(bool) proxyNonResolvableCheckBox setEnabled(bool) natStaticRadioButton toggled(bool) publicIPTextLabel setEnabled(bool) natStaticRadioButton toggled(bool) publicIPLineEdit setEnabled(bool) natStunRadioButton toggled(bool) stunServerTextLabel setEnabled(bool) natStunRadioButton toggled(bool) stunServerLineEdit setEnabled(bool) allowReferCheckBox toggled(bool) askUserReferCheckBox setEnabled(bool) allowReferCheckBox toggled(bool) refereeHoldCheckBox setEnabled(bool) profileComboBox activated(const QString&) UserProfileForm changeProfile(const QString&) openRingtoneToolButton clicked() UserProfileForm chooseRingtone() openRingbackToolButton clicked() UserProfileForm chooseRingback() openIncomingCallScriptToolButton clicked() UserProfileForm chooseIncomingCallScript() addCodecPushButton clicked() UserProfileForm addCodec() rmvCodecPushButton clicked() UserProfileForm removeCodec() upCodecPushButton clicked() UserProfileForm upCodec() downCodecPushButton clicked() UserProfileForm downCodec() availCodecListBox doubleClicked(QListBoxItem*) UserProfileForm addCodec() activeCodecListBox doubleClicked(QListBoxItem*) UserProfileForm removeCodec() openInCallAnsweredToolButton clicked() UserProfileForm chooseInCallAnsweredScript() openInCallFailedToolButton clicked() UserProfileForm chooseInCallFailedScript() openLocalReleaseToolButton clicked() UserProfileForm chooseLocalReleaseScript() openOutCallAnsweredToolButton clicked() UserProfileForm chooseOutCallAnsweredScript() openOutCallFailedToolButton clicked() UserProfileForm chooseOutCallFailedScript() openOutCallToolButton clicked() UserProfileForm chooseOutgoingCallScript() openRemoteReleaseToolButton clicked() UserProfileForm chooseRemoteReleaseScript() upConversionPushButton clicked() UserProfileForm upConversion() downConversionPushButton clicked() UserProfileForm downConversion() addConversionPushButton clicked() UserProfileForm addConversion() editConversionPushButton clicked() UserProfileForm editConversion() removePushButton clicked() UserProfileForm removeConversion() testConversionPushButton clicked() UserProfileForm testConversion() zrtpEnabledCheckBox toggled(bool) zrtpSettingsGroupBox setEnabled(bool) mwiTypeComboBox activated(int) UserProfileForm changeMWIType(int) regAddQvalueCheckBox toggled(bool) regQvalueLineEdit setEnabled(bool) sipTransportComboBox activated(int) UserProfileForm changeSipTransportProtocol(int) spxDspAgcCheckBox toggled(bool) spxDspAgcLevelTextLabel setEnabled(bool) spxDspAgcCheckBox toggled(bool) spxDspAgcLevelSpinBox setEnabled(bool) natStunRadioButton toggled(bool) natKeepaliveCheckBox setDisabled(bool) displayLineEdit usernameLineEdit domainLineEdit organizationLineEdit authRealmLineEdit authNameLineEdit authPasswordLineEdit authAkaOpLineEdit authAkaAmfLineEdit registrarLineEdit expirySpinBox regAtStartupCheckBox regAddQvalueCheckBox regQvalueLineEdit useProxyCheckBox proxyLineEdit allRequestsCheckBox proxyNonResolvableCheckBox vmAddressLineEdit mwiTypeComboBox mwiUserLineEdit mwiServerLineEdit mwiViaProxyCheckBox mwiDurationSpinBox imMaxSessionsSpinBox isComposingCheckBox presPublishCheckBox presPublishTimeSpinBox presSubscribeTimeSpinBox rtpAudioTabWidget availCodecListBox addCodecPushButton rmvCodecPushButton activeCodecListBox upCodecPushButton downCodecPushButton ptimeSpinBox inFarEndCodecPrefCheckBox outFarEndCodecPrefCheckBox spxDspAgcCheckBox spxDspAgcLevelSpinBox spxDspVadCheckBox spxDspNrdCheckBox spxDspAecCheckBox ilbcPayloadSpinBox ilbcPayloadSizeComboBox spxVbrCheckBox spxDtxCheckBox spxPenhCheckBox spxQualitySpinBox spxComplexitySpinBox spxNbPayloadSpinBox spxWbPayloadSpinBox spxUwbPayloadSpinBox g72616PayloadSpinBox g72624PayloadSpinBox g72632PayloadSpinBox g72640PayloadSpinBox g726PackComboBox dtmfTransportComboBox dtmfPayloadTypeSpinBox dtmfDurationSpinBox dtmfPauseSpinBox dtmfVolumeSpinBox sipProtoclTabWidget holdVariantComboBox maxForwardsCheckBox missingContactCheckBox regTimeCheckBox compactHeadersCheckBox multiValuesListCheckBox useDomainInContactCheckBox allowSdpChangeCheckBox allowRedirectionCheckBox askUserRedirectCheckBox maxRedirectSpinBox ext100relComboBox extReplacesCheckBox allowReferCheckBox askUserReferCheckBox refereeHoldCheckBox referrerHoldCheckBox refreshReferSubCheckBox referAorCheckBox pPreferredIdCheckBox sipTransportComboBox udpThresholdSpinBox natNoneRadioButton natStaticRadioButton publicIPLineEdit natStunRadioButton stunServerLineEdit persistentTcpCheckBox displayTelUserCheckBox numericalUserIsTelCheckBox removeSpecialCheckBox specialLineEdit useTelUriCheckBox conversionListView upConversionPushButton downConversionPushButton addConversionPushButton removePushButton editConversionPushButton testConversionLineEdit testConversionPushButton tmrNoanswerSpinBox tmrNatKeepaliveSpinBox ringtoneLineEdit ringbackLineEdit openRingtoneToolButton openRingbackToolButton incomingCallScriptLineEdit openIncomingCallScriptToolButton inCallAnsweredLineEdit openInCallAnsweredToolButton inCallFailedLineEdit openInCallFailedToolButton outCallLineEdit openOutCallToolButton outCallAnsweredLineEdit openOutCallAnsweredToolButton outCallFailedLineEdit openOutCallFailedToolButton localReleaseLineEdit openLocalReleaseToolButton remoteReleaseLineEdit openRemoteReleaseToolButton zrtpEnabledCheckBox zrtpSendIfSupportedCheckBox zrtpSdpCheckBox zrtpGoClearWarningCheckBox okPushButton cancelPushButton profileComboBox categoryListBox qlistbox.h qlineedit.h qlabel.h qcombobox.h qspinbox.h qregexp.h sdp/sdp.h qvalidator.h protocol.h qmessagebox.h gui.h qfiledialog.h qfileinfo.h qstringlist.h twinkle_config.h qlistview.h numberconversionform.h util.h user.h qvaluelist.h map list userprofileform.ui.h map<t_user *, int> map_last_cat; t_user *current_profile; int current_profile_idx; list<t_user *> profile_list; stunServerChanged(t_user *) authCredentialsChanged(t_user *, const string &) sipUserChanged(t_user *) success() mwiChangeUnsubscribe(t_user *) mwiChangeSubscribe(t_user *) showCategory( int index ) populate() initProfileList( list<t_user *> profiles, QString show_profile_name ) show( list<t_user *> profiles, QString show_profile ) validate() changeProfile( const QString & profileName ) chooseFile( QLineEdit * qle, const QString & filter, const QString & caption ) chooseRingtone() chooseRingback() chooseIncomingCallScript() chooseInCallAnsweredScript() chooseInCallFailedScript() chooseOutgoingCallScript() chooseOutCallAnsweredScript() chooseOutCallFailedScript() chooseLocalReleaseScript() chooseRemoteReleaseScript() addCodec() removeCodec() upCodec() downCodec() upConversion() downConversion() addConversion() editConversion() removeConversion() testConversion() changeMWIType( int idxMWIType ) changeSipTransportProtocol( int idx ) init() label2codec( const QString & label ) codec2label( t_audio_codec & codec ) ext_support2indexComboItem( t_ext_support ext ) indexComboItem2ext_support( int index ) exec( list<t_user *> profiles, QString show_profile ) check_dynamic_payload( QSpinBox * spb, QValueList<int> & checked_list ) get_number_conversions() validateValues()