smdr

package module
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 11, 2019 License: MIT Imports: 3 Imported by: 1

README

Smdr

Golang package for extracting and parse SMDR data from NEC SV8100 PBX systems.

Build Status

Usage

Install package

go get -v github.com/anmaslov/smdr/

or use as go modules:

import (
    "github.com/anmaslov/smdr"
)

and run go mod init then run go build

Creating a client
conn, err := net.Dial("tcp", addr)
if err != nil {
    log.Fatal("dial error:", err)
    return
}
defer conn.Close()
Send request to PBX
r1 := smdr.SetRequest(smdr.DataRequest())
if wr, err := conn.Write([]byte(r1)); //Request #1
    wr == 0 || err != nil {
        log.Fatal(err)
}

conn.SetReadDeadline(time.Now().Add(5 * time.Second))
//trying to get response from PBX
buff := make([]byte, 1024)
rd, err := conn.Read(buff)
if err != nil{
	log.Fatal(err)
}
//response received

//trying parse data
res := smdr.CDR{}
err = res.Parser(buff[:rd])
if err != nil {
    log.Fatal(err)
}
//store to file or db, example to MongoDB

//all ok, sending client response sequence
r4 := smdr.SetRequest(smdr.ClientResponse(res.sequence))
if wr, err := conn.Write([]byte(r4)); //request #4
    wr == 0 || err != nil {
    log.Fatal(err)
}

Tests

Only tested on the NEC SV8300.

License

SMDR package is released under the MIT License.

Documentation

Overview

Package smdr provided for extracting SMDR data from NEC SV8100 PBX systems.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SetRequest

func SetRequest(p *Request) []byte

SetRequest prepare to send request to PBX system

Types

type CDR

type CDR struct {
	Length   string
	Sequence int
	Tp       string

	TrunkOut string
	TrunkInc string

	Id       string
	Tenant   string
	Called   string
	CvsStart Conversation
	CvsEnd   Conversation

	TenantTwo    string
	Condition    string
	Route1       string
	Route2       string
	Phone        string
	CallMetering string
}

CDR structure for response from pbx

func New added in v1.1.0

func New() *CDR

New create new blank cdr structure

func (*CDR) Parser

func (r *CDR) Parser(b []byte) error

Parser parse raw data from PBX system

type Conversation

type Conversation struct {
	Year   string
	Month  string
	Day    string
	Hour   string
	Minute string
	Second string
}

Conversation datetime structure

type Parity

type Parity byte

Parity used for error detection

type Request

type Request struct {
	// contains filtered or unexported fields
}

Request to pbx

func ClientDisconnect added in v1.1.0

func ClientDisconnect() *Request

ClientDisconnect ident 6 connection Disconnect

func ClientResponse

func ClientResponse(seq int) *Request

ClientResponse ident 4 client response

func DataRequest

func DataRequest() *Request

DataRequest ident 1 request for get data from PBX

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL